4.8 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, localeTitle
| title | localeTitle | 
|---|---|
| Python Integers | Inteiros em Python | 
O domínio teórico para números inteiros (integers) em Python vai de infinito negativo até o infinito. Na prática, os valores inteiros são limitados pela quantidade de memória disponível.
No Python 2, havia uma distinção entre números que se encaixam em números longos( long) e int, de 32 ou 64 bits, limitados pela memória disponível. O Python 3 unificou os dois tipos em apenas int . Mais informações no PEP 237 .
criando int usando literais inteiros
Objetos inteiros podem ser criados usando literais inteiros. Números sem adornos e sem decimais são literais inteiros:
>>> 1234567890           # Números sem adornos são literais inteiros 
 1234567890 
 >>> type(1234567890) 
 <class 'int'> 
Literais numéricos não contêm um sinal. No entanto, é possível criar objetos inteiros negativos prefixando com um operador - (menos) sem espaço antes do literal:
>>> -1234567890 
 -1234567890 
 >>> type(-1234567890) 
 <class 'int'> 
Da mesma forma, objetos inteiros positivos podem ser criados prefixando um operador + (mais) sem espaço antes dos dígitos. Normalmente o  + é omitido:
>>> +1234 
 1234 
Os números inteiros binários (base 2, prefixo: 0b ou 0B ), octais (base 8, prefixo: 0o ou 0O ) e hexadecimais (base 16, prefixo: 0x ou 0X ) também podem ser criados usando literais inteiros:
>>> 0b1, 0b10, 0b11 
 (1, 2, 3) 
 >>> 0o1, 0o10, 0o11 
 (1, 8, 9) 
 >>> 0x1, 0x10, 0x11 
 (1, 16, 17) 
Observe que os 0s iniciais para literais inteiros diferentes de zero não são permitidos:
>>> 0     # Zero sozinho está certo. 
 0 
 >>> 01    # Zero antecedendo o inteiro causa SyntaxError. 
  File "<stdin>", line 1 
    01 
     ^ 
 SyntaxError: invalid token 
O construtor int é outra maneira de criar objetos inteiros .
class int(x=0) 
 class int(x, base=10) 
Criar objetos inteiros com literais inteiros é preferível quando possível:
>>> a = 1         # Prefira literais inteiros sempre que possível. 
 >>> type(a) 
 <class 'int'> 
 >>> b = int(1)    # Funciona, mas é desnecessário. 
 >>> type(b) 
 <class 'int'> 
No entanto, o construtor permite criar objetos inteiros de outros tipos de números:
>>> a = 1.123 
 >>> type(a) 
 <class 'float'> 
 >>> print(a) 
 1.123 
 >>> b = int(1.123) 
 >>> type(b) 
 <class 'int'> 
 >>> print(b) 
 1 
Usando o construtor int para números de ponto flutuante (float) arredondará o número em direção a zero:
>>> int(-1.23) 
 -1 
 >>> int(1.23) 
 1 
As constantes boolean internas são instâncias da classe bool e são subclasses da classe int , tornando-as uma espécie de tipo numérico:
>>> type(True) 
 <class 'bool'> 
 >>> issubclass(bool, int) 
 True 
Se isso não faz sentido para você, não se preocupe. Por enquanto, lembre-se de que chamar o construtor int com objetos boolean retornará objetos inteiros :
>>> int(True) 
 1 
 >>> int(False) 
 0 
O construtor int também fará objetos inteiros a partir de strings:
>>> a = "10" 
 >>> type(a) 
 <class 'str'> 
 >>> b = int("10") 
 >>> type(b) 
 <class 'int'> 
As Strings para o construtor int devem representar um literal inteiro:
O segundo parâmetro do construtor int é especificar uma base (padrão: 10). Bases válidas são 0 e 2-36.
Se uma base explícita for fornecida, o primeiro argumento deve ser uma string.
>>> int("111", 2) 
 7 
 >>> int(111, 2) 
 Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
 TypeError: int() can't convert non-string with explicit base 
A string usada para o construtor int com uma base explícita deve ser um literal inteiro válido para essa base:
>>> int('11', 2) 
 3 
 >>> int('12', 2) 
 Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
 ValueError: invalid literal for int() with base 2: '12' 
Ambas as sequências prefixadas e não prefixadas de literais inteiros podem ser usadas. No entanto, se usadas, o prefixo deve corresponder à base fornecida:
>>> int('1101', 2) 
 13 
 >>> int('0b1101', 2) 
 13 
 >>> int('0x1101', 2) 
 Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
 ValueError: invalid literal for int() with base 2: '0x1101' 
Se uma seqüência de caracteres prefixada e base 0 for usada, o objeto inteiro criado usará a base especificada pelo prefixo. Se nenhum prefixo for usado, então a base assumida é 10:
>>> int('100', 0) 
 100 
 >>> int('0b100', 0) 
 4 
 >>> int('0o100', 0) 
 64