2012-11-17 16 views
15

Jestem nowy w Pythonie Używam Pythona 2.7 gdy wpisałem to na Python powłoki:W jaki sposób interpretować pyton numery z wiodącymi zerami

print 01 
print 010 
print 0100 
print 01000 

Daje to wynik

1 
8 
64 
512 

Próbowałem zrozumieć, dlaczego tak się stało, ale niestety nie zrozumiałem.

+0

wydrukować te konkretne numery (jeśli zaczynając od 0), wystarczy użyć je jako ciągi: 'print '01'' ' print' 010'' etc –

Odpowiedz

20

Jeśli numer zaczyna się od 0, jest interpretowany jako ósemkowej lub podstawy 8. Wystarczy zrobić:

print 1 
print 10 
print 100 
print 1000 

A twój problem zostanie rozwiązany.

Więcej na ósemkowym: http://en.wikipedia.org/wiki/Octal

Oto sposób zrozumieć ósemkowy łatwiej:

ósemkowy 1 jest dziesiętny (numery normalne) 1

ósemkowe 2: standardowy 2

...

ósemkowa 7: dziesiętna 7

ósemkowy 10: standardowy 8

ósemkowy 11: standardowy 9

ósemkowy 12: dziesiętna 10

...

ósemkowy 17: dziesiętna 15

ósemkowy 20: standardowy 16

i tak dalej. Octal używa tylko cyfr od 0 do 7.

Mam nadzieję, że to pomogło!

+0

dziękuję, tyle –

+0

@BassamBadr jesteś mile widziany ! – Doorknob

+5

Nawiasem mówiąc, jest to poprawne tylko dla Pythona 2. W Pythonie 3 prefiks '0o' jest obowiązkowy; wiodącym '0' na własną rękę jest' SyntaxError'. Powinieneś też powiedzieć, że liczby ósemkowe używają tylko * cyfr * od 0 do 7. –

10

Python interpretuje numer rozpoczynający się 0 jak octal która base 8 Ty możesz wypracować podstawy używając ciąg binarny 10 jak b^1 === b gdzie b to podstawa.

# print the decimal value of the binary number 10 
>>> print 0b10 
2 
# print the decimal value of the octal number 10  
>>> print 010 
8 
# print the decimal value of the hexadecimal number 10 
>>> print 0x10 
16 

W każdej bazie symbolem 1 jest zawsze wartość 1decimal ponieważ b^0 === 1 dla wszystkich b jak czytać od prawej do lewej indeks numer zaczyna się 0.

# print the decimal value of the binary number 1 
>>> print 0b001 
1 
# print the decimal value of the octal number 1 
>>> print 0001 
1 
# print the decimal value of the hexadecimal number 1 
>>> print 0x001 
1 

Gdy podstawa jest interpretowany (0, 0b, 0x) prowadzące 0 nie są ważne.

Liczba symboli potrzebnych do zasady wynosi b gdzie największe symboli wynosi b-1

  Base (b) Number of Symbols (b) Symbols (0 : b-1) 
Binary  2   2      0,1 
Octal  8   8      0,1,2,3,4,5,7,6,7 
Decimal  10   10      0,1,2,3,4,5,7,6,7,8,9 

Największą wartość, która może być reprezentowana przez numer jest (b^n)-1 gdzie n oznacza liczbę cyfr. Biorąc pod uwagę liczbę 3 cyfra największa wartość dziesiętną jest (10^3)-1 = 999, w ósemkowym (8^3)-1 = 511 (decimal) który jest 777 w bazie 8 oraz w binarnym (2^3)-1 = 7 (decimal) który jest 111 w podstawy 2. Tak więc widać, że z mniejszą ilością symboli (dolna podstawa) wartość, którą może reprezentować zmniejszenie ze stałą liczbą cyfr.

Powiązane problemy