0

我遇到了一件很奇怪的事情,至少对我来说是这样。

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

每当我添加09到元组时,我都会收到一个错误:SyntaxError: invalid token它只针对这个特定的数字。

任何的想法?

4

4 回答 4

3

当您在数字上使用前导0时,Python 将其解释为base-8(八进制)数字。删除前导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
于 2013-02-02T15:11:40.743 回答
1

带前导0s 的数字被认为是八进制,因此09无效...只需删除 0

于 2013-02-02T15:12:00.107 回答
0

我认为您需要在可能将其解释为八进制数的数字之前去掉零...

于 2013-02-02T15:14:00.727 回答
0

你可以试试这个。(已经回答了为什么 09 提供错误的原因)

month='05'
if month not in ('02', '04', '06', '11','09'):
        print "Good"
于 2013-02-02T15:18:36.190 回答