sys.maxint w Pythonie
W programowaniu maxint/INT_MAX oznacza najwyższą wartość, jaką można przedstawić za pomocą liczby całkowitej. W niektórych przypadkach podczas programowania może być konieczne przypisanie wartości większej niż jakakolwiek inna wartość całkowita. Zwykle przypisuje się takie wartości ręcznie. Rozważmy na przykład listę liczb całkowitych, gdzie minimalną wartość należy znaleźć za pomocą a dla pętli .
Pyton
# initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value manually> curr_min> => 999999> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
Wyjście
The minimum value is -22
W powyższym podejściu zakładamy, że 999999 jest maksymalną możliwą wartością na naszej liście i porównaj ją z innymi elementami, aby zaktualizować, gdy zostanie znaleziona wartość mniejsza od niej.
sys moduł w Pythonie
Moduł ten służy do interakcji z interpreterem i uzyskiwania dostępu do zmiennych utrzymywanych przez interpreter. Można go używać do wykonywania manipulacji w środowisku wykonawczym. Należy go zaimportować podobnie jak inne pakiety, aby móc korzystać z zawartych w nim funkcji. Pythona moduł sys udostępnia różnorodne funkcje i stałe, wśród których jest stała maxint , którego można użyć do ustawienia dodatniej wartości całkowitej, która z pewnością będzie większa niż jakakolwiek inna liczba całkowita. Spójrz na poniższy przykład.
Pyton
# import the module> import> sys> > # initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value with> # maxint constant> curr_min> => sys.maxint> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser> > # than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
Wyjście
The minimum value is -22
W powyższym programie zamiast ręcznie przypisywać większą wartość, sys.maxint Jest używane. Ta stała jest obsługiwana w wersji Python 2.x. Wartość oznaczoną przez stałą można obliczyć jako:
maxint = 2 31 – 1 (w środowisku 32-bitowym)
maxint = 2 63 – 1 (w środowisku 64-bitowym)
W Pythona 2 , dodanie 1 do maxint daje najwyższą możliwą wartość długi wew i w Pythona 2.7 , odejmowanie 1 od maxint daje najmniejsza możliwa wartość liczby całkowitej .
Pyton
# import the module> import> sys> > max_int> => sys.maxint> min_int> => sys.maxint> -> 1> long_int> => sys.maxint> +> 1> > print> (> 'maxint :'> +> str> (max_int)> +> ' - '> +> str> (> type> (max_int)))> print> (> 'maxint - 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (min_int)))> print> (> 'maxint + 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (long_int)))> |
Wyjście
maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 -
Ta stała została usunięta z Pyton 3 , ponieważ w tej wersji liczby całkowite są uważane za dowolną długość. Jeśli użyjesz tej stałej w Pythonie 3, pojawi się następujący błąd. Rozważmy ten sam przykład, w którym element wartości minimalnej należy znaleźć z listy.
Python3
import> sys> > # initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value with maxint constant> curr_min> => sys.maxint> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
Wyjście :
AttributeError: module 'sys' has no attribute 'maxint'
Stała ta została usunięta, ponieważ nie było już ograniczenia wartości liczb całkowitych. W Python 3, wprowadzono stałą podobną do tej, tj sys.maxsize . Zwraca to najwyższą możliwą wartość całkowitą typu zmiennej Py_ssize_t a także oznacza rozmiar wskaźnika platformy. Uważa się, że ten maksymalny rozmiar ogranicza rozmiar różnych struktur danych, takich jak ciągi znaków i listy. Kolejną rzeczą, na którą należy zwrócić uwagę, jest to, że w Pythonie 3 wew I długi wew łączą się w jedno. Aby lepiej zrozumieć, spójrz na poniższy przykład.
Python3
# import the module> import> sys> > # using sys.maxsize> max_int> => sys.maxsize> min_int> => sys.maxsize> -> 1> long_int> => sys.maxsize> +> 1> > print> (> 'maxint :'> +> str> (max_int)> +> ' - '> +> str> (> type> (max_int)))> print> (> 'maxint - 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (min_int)))> > # the data type is represented as int> print> (> 'maxint + 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (long_int)))> |
Wyjście
maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 -