python python-2.x

¿Qué significan los números que comienzan con 0 en python?



python-2.x (7)

Cuando escribo enteros pequeños con un 0 en python, dan resultados extraños. ¿Por qué es esto?

>>> 011 9 >>> 0100 64 >>> 027 23

Nota: Python versión 2.7.3 He probado esto en Python 3.0, y aparentemente esto ahora es un error. Por lo tanto, es algo específico de la versión.

Editar: aparentemente todavía son enteros:

>>> type(027) `<type ''int''>`


Ambas versiones de Python 2 y 3 comprenden octal escrito con ''0o'' y ''0O'' (mayúscula o), así que acostúmbrate a usarlo si también trabajas con Python 2.x.

Solo use ceros a la izquierda en números en cadenas.

Puede convertir enteros de cualquiera de los otros sistemas base con int ().

>>> int(0o20)

16

Si desea que su salida se muestre con ceros a la izquierda, defínala según esta respuesta: Mostrar número con ceros a la izquierda

Si alguna vez planea trabajar con códigos postales, es mejor tratarlos como cadenas de todas maneras.


Aparentemente son números octales (base 8), y el 0 es solo un prefijo desactualizado que Python 2 solía usar.

En Python 3 debe escribir: 0o11 en 0o11 lugar.

Todavía son enteros, pero realizar operaciones con ellos dará como resultado una forma regular de base 10.


En Python 2 (y algunos lenguajes de programación más), estos representan números octales .

En Python 3, 011 ya no funciona y en su lugar usaría 0o11 .

En respuesta a la edición : y son enteros regulares. Se especifican de otra manera; y Python los convierte automáticamente en una representación entera interna (que en realidad es base-2, por lo que tanto 9 como 011 se convierten internamente a 0b1001 ).



Estos son números octales (base 8, valores 0 - 7)

Puede convertir un número decimal a octal con la función oct() .

In [125]: for i in range(10): .....: print ''{:5} {:5}''.format(i, oct(i)) .....: 0 0 1 01 2 02 3 03 4 04 5 05 6 06 7 07 8 010 9 011

y convierte un valor octal en entero con la función int() con la base apropiada (8 en este caso):

int(str(17), 8) Out[129]: 15

El conjunto similar de reglas / funciones se aplica a los números hexadecimales (base 16) usando la función hex() .


Estos son números representados en la base 8 (números octales). Por ejemplo,

011 es igual a 1*(8**1) + 1*(8**0) = 9,

0100 es igual a 1*(8**2) + 0*(8**1) + 0*(8**0) = 64,

027 es igual a 2*(8**1) + 7*(8**0) = 16 + 7 = 23.


Números en el sistema numérico octal. Otros prefijos son 0x para hexadecimal y 0b para binario.