2017-04-05 6 views
1

Hat jemand warum Python die unten auf diese Weise behandelt.Python nicht akzeptiert 09 aber akzeptiert 07

>>> a = 099 
    File "<stdin>", line 1 
    a = 099 
     ^
SyntaxError: invalid token 
>>> a = 088 
    File "<stdin>", line 1 
    a = 088 
     ^
SyntaxError: invalid token 
>>> a = 0559 
    File "<stdin>", line 1 
    a = 0559 
     ^
SyntaxError: invalid token 
>>> a = 077 
>>> 

Es scheint nicht, Zahlen beginnend mit 0 anzunehmen und mit der vorhergehenden 8 oder 9. Wenn es eine andere Zahl ist, es keinen Fehler wirft. Warum das?

+1

'099' wird als Oktalzahl interpretiert, aber 9 ist keine gültige Oktalziffer – myaut

+0

siehe auch: http://stackoverflow.com/questions/43071916/why-does-000-evaluate-to-0-in-python -3 –

Antwort

2

In Python 2, wie in C, eine ganze Zahl literal, die mit einem 0 beginnt, ist in Oktal. Die Ziffern 8 und 9 existieren nicht in Oktal (sie sind 010 bzw. 011 geschrieben), das ist ein Syntaxfehler.

>>> 010 
8 
>>> 08 
    File "<stdin>", line 1 
    008 
    ^
SyntaxError: invalid token 

In Python 3 ist diese Funktion, von der nicht viele Leute wissen, verschwunden. Nicht-Null-Literale, die mit 0 beginnen, sind Syntaxfehler.

+0

not _all_ literals: http://stackoverflow.com/questions/43071916/why-does-000-evaluate-to-0-in-python-3 –

+0

beachten Sie, dass Python 3 Oktal-Präfix ist jetzt "0o" –

Verwandte Themen