4.7 KiB
title | localeTitle |
---|---|
Python Integers | Enteros de Python |
El dominio teórico para enteros en python es infinito negativo a infinito. En la práctica, los valores enteros están limitados por la cantidad de memoria disponible.
En Python 2, había una distinción entre int
, números que caben en números de 32 o 64 bit C , y long
, limitados por la memoria disponible. Python 3 unificó los dos tipos en solo int
, más información en PEP 237 .
creación int
utilizando literales enteros
Los objetos enteros se pueden crear utilizando literales enteros. Los números sin adornos sin decimales son literales enteros:
>>> 1234567890 # Unadorned numbers are integer literals
1234567890
>>> type(1234567890)
<class 'int'>
Los literales numéricos no contienen un signo, sin embargo, es posible crear objetos enteros negativos prefijando con un operador unario -
(menos) sin espacio antes del literal:
>>> -1234567890
-1234567890
>>> type(-1234567890)
<class 'int'>
Del mismo modo, los objetos enteros positivos se pueden crear prefijando un operador unario +
(más) sin espacio antes de los dígitos. Por lo general, +
es omitido:
>>> +1234
1234
Los enteros binarios (base 2, prefijo: 0b
o 0B
), octal (base 8, prefijo: 0o
o 0O
) y hexadecimal (base 16, prefijo: 0x
o 0X
) también pueden crearse utilizando literales enteros:
>>> 0b1, 0b10, 0b11
(1, 2, 3)
>>> 0o1, 0o10, 0o11
(1, 8, 9)
>>> 0x1, 0x10, 0x11
(1, 16, 17)
Tenga en cuenta que los 0 iniciales para los literales enteros distintos de cero no están permitidos :
>>> 0 # Zero by itself is okay.
0
>>> 01 # Leading zero(s) cause SyntaxError.
File "<stdin>", line 1
01
^
SyntaxError: invalid token
El constructor int
es otra forma de crear objetos enteros .
class int(x=0)
class int(x, base=10)
La creación de objetos enteros con literales enteros se prefiere cuando es posible:
>>> a = 1 # Prefer integer literal when possible.
>>> type(a)
<class 'int'>
>>> b = int(1) # Works but unnecessary.
>>> type(b)
<class 'int'>
Sin embargo, el constructor permite crear objetos enteros de otros 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
El uso del constructor int
para los números de punto flotante truncará el número hacia cero:
>>> int(-1.23)
-1
>>> int(1.23)
1
Las constantes boolean
integradas son instancias de la clase bool
, y son subclases de la clase int
, lo que las convierte en un tipo de tipo numérico:
>>> type(True)
<class 'bool'>
>>> issubclass(bool, int)
True
Si eso no tiene sentido para ti, no te preocupes. Por ahora solo recuerda que llamar al constructor int con objetos boolean
devolverá objetos enteros :
>>> int(True)
1
>>> int(False)
0
El constructor int
también creará objetos enteros a partir de cadenas:
>>> a = "10"
>>> type(a)
<class 'str'>
>>> b = int("10")
>>> type(b)
<class 'int'>
Las cadenas para el constructor int
deben representar un literal entero:
El segundo parámetro del constructor int
es especificar una base (por defecto: 10). Las bases válidas son 0 y 2-36.
Si se proporciona una base explícita, el primer argumento debe ser una cadena.
>>> 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
La cadena utilizada para el constructor int
con una base explícita debe ser un literal entero válido para esa 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'
Se pueden usar tanto cadenas prefijadas como no prefijadas de literales enteros, sin embargo, si se usan, el prefijo debe coincidir con la base proporcionada.
>>> 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'
Si se usa una cadena prefijada y una base 0, el objeto entero creado usará la base especificada por el prefijo. Si no se usa ningún prefijo, entonces se supone que la base 10
>>> int('100', 0)
100
>>> int('0b100', 0)
4
>>> int('0o100', 0)
64