Python 为什么此词典定义会引发语法错误?

Python 为什么此词典定义会引发语法错误?,python,syntax,dictionary,Python,Syntax,Dictionary,可能重复: 我正在定义一个字典,将日数映射到它们各自的单词。出于某种原因,以下代码引发“SyntaxError:invalid token”并突出显示“08” 修改代码,使08和09变为98和99将停止任何错误,如下代码所示: days = {01:"first", 02:"second", 03:"third", 04:"fourth", 05:"fifth", 06:"sixth", 07:"seventh", 98:"eighth", 99:"nineth", 10:"tenth",

可能重复:

我正在定义一个字典,将日数映射到它们各自的单词。出于某种原因,以下代码引发“SyntaxError:invalid token”并突出显示“08”

修改代码,使08和09变为98和99将停止任何错误,如下代码所示:

days = {01:"first", 02:"second", 03:"third", 04:"fourth", 05:"fifth", 06:"sixth", 07:"seventh", 98:"eighth", 99:"nineth", 10:"tenth", 
    11:"eleventh", 12:"twelvth", 13:"thirteenth", 14:"fourteenth", 15:"fifteenth", 16:"sixteenth", 17:"seventeenth", 18:"eighteenth",
    19:"nineteenth", 20:"twentieth", 21:"twenty-first", 22:"twenty-second", 23:"twenty-third", 24:"twenty-fourth", 25:"twenty-fifth",
    26:"twenty-sixth", 27:"twenty-seventh", 28:"twenty-eighth", 29:"twenty-nineth", 30:"thirtieth", 31:"thirty-first"}
输出为:

{1: 'first', 2: 'second', 3: 'third', 4: 'fourth', 5: 'fifth', 6: 'sixth', 7: 'seventh', 10: 'tenth', 11: 'eleventh', 12: 'twelvth', 13: 'thirteenth', 14: 'fourteenth', 15: 'fifteenth', 16: 'sixteenth', 17: 'seventeenth', 18: 'eighteenth', 19: 'nineteenth', 20: 'twentieth', 21: 'twenty-first', 22: 'twenty-second', 23: 'twenty-third', 24: 'twenty-fourth', 25: 'twenty-fifth', 26: 'twenty-sixth', 27: 'twenty-seventh', 28: 'twenty-eighth', 29: 'twenty-nineth', 30: 'thirtieth', 31: 'thirty-first', 98: 'eighth', 99: 'nineth'}
以前错误的键已移到字典的末尾

非常感谢看到这里发生的事情的人


James

数字
0
是整数文本上的前缀,表示它在python中是一个八进制数

…正如我无意中遗漏的,@larsmans在他的评论中所指出的那样,它将数字限制为只包含数字
0
7
,不包括
8
9

不过,同样值得注意的是,这是Python2.x中的语法——它在Python3.0中被更改,表面上是因为您来到这里的确切原因。包含更改的详细信息

最相关的位:

几乎所有当前流行的计算机语言,包括C/C++、Java、Perl和JavaScript,都将前导零的数字序列视为八进制数。主张将这些数字视为十进制数字的人有一个非常有效的观点-[…]整个非计算机世界几乎完全使用十进制数字


数字
0
是整数文本上的前缀,表示它是python中的八进制数

…正如我无意中遗漏的,@larsmans在他的评论中所指出的那样,它将数字限制为只包含数字
0
7
,不包括
8
9

不过,同样值得注意的是,这是Python2.x中的语法——它在Python3.0中被更改,表面上是因为您来到这里的确切原因。包含更改的详细信息

最相关的位:

几乎所有当前流行的计算机语言,包括C/C++、Java、Perl和JavaScript,都将前导零的数字序列视为八进制数。主张将这些数字视为十进制数字的人有一个非常有效的观点-[…]整个非计算机世界几乎完全使用十进制数字


在Python中,在数字前面加上
0
表示它是八进制的。所以
08
09
会给出错误,因为数字
8
9
不存在八进制。只要去掉前导的
0
就行了。

在Python中,在数字前面加一个
0
表示它是八进制的。所以
08
09
会给出错误,因为数字
8
9
不存在八进制。只要去掉前导的
0
,它就会工作。

以0开头且仅包含数字的数字将在中解释。8和9不是有效的八进制数。如果将08和09替换为8和9,代码将起作用。

以0开头且仅包含数字的数字将在中解释。8和9不是有效的八进制数。如果将08和09替换为8和9,代码将正常工作。

。。。显然,
08
不是有效的八进制数+1.显然,
08
不是有效的八进制数+1.
{1: 'first', 2: 'second', 3: 'third', 4: 'fourth', 5: 'fifth', 6: 'sixth', 7: 'seventh', 10: 'tenth', 11: 'eleventh', 12: 'twelvth', 13: 'thirteenth', 14: 'fourteenth', 15: 'fifteenth', 16: 'sixteenth', 17: 'seventeenth', 18: 'eighteenth', 19: 'nineteenth', 20: 'twentieth', 21: 'twenty-first', 22: 'twenty-second', 23: 'twenty-third', 24: 'twenty-fourth', 25: 'twenty-fifth', 26: 'twenty-sixth', 27: 'twenty-seventh', 28: 'twenty-eighth', 29: 'twenty-nineth', 30: 'thirtieth', 31: 'thirty-first', 98: 'eighth', 99: 'nineth'}