sys.maxint Pythonissa

Ohjelmoinnissa, maxint/INT_MAX tarkoittaa suurinta arvoa, joka voidaan esittää kokonaisluvulla. Joissakin tapauksissa ohjelmoinnin aikana saatamme joutua antamaan arvon, joka on suurempi kuin mikään muu kokonaislukuarvo. Yleensä tällaiset arvot määritetään manuaalisesti. Tarkastellaan esimerkiksi luetteloa kokonaisluvuista, joiden vähimmäisarvo on selvitettävä käyttämällä a silmukalle .

Python




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

Lähtö

The minimum value is -22 

Yllä olevassa lähestymistavassa oletamme sen 999999 on suurin mahdollinen arvo luettelossamme ja vertaa sitä muihin elementteihin päivittääksesi, kun sitä pienempi arvo löytyy.

sys-moduuli Pythonissa

Tätä moduulia käytetään vuorovaikutukseen tulkin kanssa ja tulkin ylläpitämien muuttujien käyttämiseen. Sitä voidaan käyttää suorittamaan manipulaatioita ajonaikaisessa ympäristössä. Tämä on tuotava muiden pakettien tapaan, jotta siinä olevia toimintoja voidaan hyödyntää. Pythonin sys-moduuli tarjoaa erilaisia ​​funktioita ja vakioita, joista vakio maxint , jota voidaan käyttää asettamaan positiivinen kokonaisluku, joka on taatusti suurempi kuin mikään muu kokonaisluku. Katso alla olevaa esimerkkiä.

Python




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

Lähtö

The minimum value is -22 

Yllä olevassa ohjelmassa suuremman arvon määrittämisen sijaan manuaalisesti, sys.maxint käytetään. Python-versio 2.x tukee tätä vakiota. Vakiolla merkitty arvo voidaan laskea seuraavasti:

maxint = 2 31 – 1 (32-bittisessä ympäristössä)

maxint = 2 63 – 1 (64-bittisessä ympäristössä)

Sisään Python 2 , lisäämällä 1 maksimiin saadaan korkein mahdollinen pitkä int ja sisään Python 2.7 , vähentämällä 1 maxintista saadaan pienin mahdollinen arvo kokonaisluvulle .

Python




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

Lähtö

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

Tämä vakio poistettiin Python 3 , koska tässä versiossa kokonaislukujen katsotaan olevan mielivaltaisen pituisia. Jos käytät tätä vakiota Python 3:ssa, saat seuraavan virheen. Tarkastellaan samaa esimerkkiä, jossa minimiarvon elementti on selvitettävä luettelosta.

Python 3




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

Lähtö:

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

Tämä vakio poistettiin, koska kokonaislukujen arvolla ei enää ollut rajaa. Sisään Python 3, otettiin käyttöön samanlainen vakio, joka on sys.maxsize . Tämä palauttaa muuttujatyypin suurimman mahdollisen kokonaisluvun Py_ssize_t ja myös se ilmaisee alustan osoittimen kokoa. Tämän enimmäiskoon katsotaan rajoittavan eri tietorakenteiden, kuten merkkijonojen ja luetteloiden, kokoa. Toinen huomionarvoinen asia on, että Python 3:ssa int ja pitkä int yhdistetään yhdeksi. Katso alla oleva esimerkki ymmärtääksesi paremmin.

Python 3




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

Lähtö

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