2013-02-02 65 views
0

我遇到了一件很奇怪的事情,至少對我來說。很奇怪:如果x沒聲明Python 2.7

if month not in (02, 04, 06, 11): 
     print "Good" 

每當我添加09的元組我得到所謂的錯誤:SyntaxError: invalid token而且只有這個特殊號碼。

有什麼想法嗎?

回答

3

當您在某個數字上使用前導0時,Python會將其解釋爲a base-8 (octal) number。刪除前導0

>>> 10 
10 
>>> 010 
8 
>>> 9 
9 
>>> 09 
    File "<stdin>", line 1 
    09 
    ^
SyntaxError: invalid token 

Python 3在此方面進行了改進; 所有號碼與一家領先的0被認爲是無效現在,創建一個八進制數你總是必須使用0o前綴改爲:

>>> 010 
    File "<stdin>", line 1 
    010 
    ^
SyntaxError: invalid token 
>>> 0o10 
8 
+0

其實 - 我想我已經看到了這個兩兩三次,最近 - 也許它添加到我們的常見問題列表。) –

+0

我可以想像;觸發然後誤解是一件容易的事情。 –

1

數字與領先0 s被認爲八進制,所以09無效......剛落0的

0

我認爲你需要它可能將其解釋爲一個八進制數數字之前擺脫零...

0

你可以試試這個(原因已經回答了爲什麼09提供錯誤)

month='05' 
if month not in ('02', '04', '06', '11','09'): 
     print "Good" 
+0

謝謝大家的所有答覆。 – nutship

+0

如果您的問題解決了,請接受任何答案。 – Arpit