为什么此错误消息不指向列表中的第一个无效八进制数?

时间:2015-02-05 16:44:16

标签: python python-2.7 octal

据我所知,我遇到的一个奇怪的错误来自于某些输入数字被解释为八进制的事实。但是,在接下来的行中,例如“9”不会产生错误,而“8”会产生错误吗?

    MY_LIST = [152,187,267,362,935,040,097,262,292,333,135,334,337,144,288,317,3
43,172,032,160,289,186,916,039,274,069,018,911,081,286,356]
                                         ^
SyntaxError: invalid token

1 个答案:

答案 0 :(得分:3)

069不是有效的八进制数,也不是其他几个,包括018

Python指的是097但是,第一个以0开头且不是有效八进制数的数字。您的控制台打包错误消息,您将错误消息解释为指向018值,但实际上上面的行包含错误。

比较包装版本:

    MY_LIST = [152,187,267,362,935,040,097,262,292,333,135,334,337,144,288,317,3
43,172,032,160,289,186,916,039,274,069,018,911,081,286,356]
                                         ^

使用未包装的版本:

MY_LIST = [152,187,267,362,935,040,097,262,292,333,135,334,337,144,288,317,343,172,032,160,289,186,916,039,274,069,018,911,081,286,356]
                                     ^

执行换行的是您的控制台,不是Python

前面的数字040是有效八进制数,之前的所有数字都以0以外的数字开头,而不是八进制数。

请注意,根据我的经验,Windows控制台无法直接调整大小;如果要针对更大或更小的窗口进行测试,则必须更改控制台设置以增加列数。见Why is the Windows cmd.exe limited to 80 characters wide?

使用从最后删除一些元素的列表可以更容易地诊断您的问题。