logo

sys.maxint v Pythonu

v programování, maxint/INT_MAX označuje nejvyšší hodnotu, která může být reprezentována celým číslem. V některých případech můžeme při programování potřebovat přiřadit hodnotu, která je větší než jakákoli jiná celočíselná hodnota. Obvykle se takové hodnoty přidělují ručně. Vezměme si například seznam celých čísel, kde je třeba zjistit minimální hodnotu pomocí a pro smyčku .

testování a typy softwaru

Krajta








# 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))>



>

>

Výstup

The minimum value is -22>

Ve výše uvedeném přístupu to předpokládáme 999999 je maximální možná hodnota v našem seznamu a porovnejte ji s jinými prvky, aby se aktualizovala, když je nalezena hodnota nižší, než je tato.

sys modul v Pythonu

Tento modul se používá k interakci s tlumočníkem ak přístupu k proměnným spravovaným tlumočníkem. Lze jej použít k provádění manipulací v běhovém prostředí. Aby bylo možné využívat funkce v něm obsažené, je třeba jej importovat jako ostatní balíčky. Python sys modul poskytuje řadu funkcí a konstant, mezi nimiž konstanta maxint , který lze použít k nastavení kladné celočíselné hodnoty, která bude zaručeně větší než jakékoli jiné celé číslo. Podívejte se na níže uvedený příklad.

Krajta




# 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))>

>

>

Výstup

The minimum value is -22>

Ve výše uvedeném programu místo ručního přiřazení větší hodnoty sys.maxint se používá. Tato konstanta je podporována v Pythonu verze 2.x. Hodnotu označenou konstantou lze vypočítat jako:

maxint = 231– 1 (v 32bitovém prostředí)

maxint = 263– 1 (v 64bitovém prostředí)

v Python 2 , přidání 1 k maxintu dává nejvyšší možnou hodnotu dlouhá int a dovnitř Python 2.7 , odečtením 1 od maxint dostaneme nejmenší možná hodnota pro celé číslo .

Krajta




# 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)))>

>

>

Výstup

maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 ->

Tato konstanta byla odstraněna z Python 3 , protože celá čísla v této verzi jsou považována za libovolnou délku. Pokud tuto konstantu použijete v Pythonu 3, zobrazí se následující chyba. Zvažte stejný příklad, kdy je třeba prvek minimální hodnoty zjistit ze seznamu.

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))>

>

>

Výstup :

AttributeError: module 'sys' has no attribute 'maxint'>

Tato konstanta byla odstraněna, protože již neexistoval limit pro hodnotu celých čísel. v Python 3, byla zavedena konstanta podobná této, která je sys.maxsize . To vrátí nejvyšší možnou celočíselnou hodnotu typu proměnné Py_ssize_t a také označuje velikost ukazatele platformy. Tato maximální velikost se považuje za omezení velikosti různých datových struktur, jako jsou řetězce a seznamy. Další věc, kterou je třeba poznamenat, je v Pythonu 3 int a dlouhá int jsou sloučeny do jednoho. Pro lepší pochopení se podívejte na níže uvedený příklad.

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)))>

>

vyměnit vše
>

Výstup

maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 ->