【问题标题】:Is this a bug in python?这是python中的错误吗?
【发布时间】:2018-02-03 18:39:51
【问题描述】:

遵循我在 Python 3.5 中的代码

one=[]
dict={}
for i in range(int(input())):
    for j in range(9):
        one.append(int(input()) #missing one ) <- Line 5

dict[1]='hello'                 # Line 7

print(dict)

以下是抛出异常。

我在第 5 行遗漏了 ),但错误显示在第 7 行。

这是一个错误还是有关于在错误行号上显示错误的解释?

【问题讨论】:

  • 这是一个实用问题的网站。不,这不是python中的错误。这对您来说是一个实际问题吗?
  • @ReutSharabani:我看了 7 号线 30 分钟,终于发现错误实际上在 5 号线。
  • 主要的“问题”是如果python的语法允许多行语句,问题实际上是第7行。
  • @ReutSharabani:我通过将; 放在语句末尾进行了快速测试,它在第 5 行显示错误。您的解释是正确的。您可以将其添加为答案吗?
  • 我不认为这是一个实际问题,也不认为我的回答是一个很好的解释,所以没有:)

标签: python-3.x exception


【解决方案1】:

解析器不知道(而且真的不知道)您忘记了结束 )。它只知道跳过空格后,它没想到会在int(input()) 之后立即找到一个标识符(在这种情况下为dict)。你会从更明显的错误中得到基本相同的错误消息

>>> one.append(int("3") dict[1]=3)
File "<stdin>", line 1
  one.append(int("3") dict[1]=3)
                         ^
SyntaxError: invalid syntax

类似的代码

for i in range(int(input())):
    for j in range(9):
        one.append(int(input())
+ dict[1])

会很好,因为缩进在未闭合的括号内是灵活的。解析器不负责猜测哪些括号可能被意外打开。它只是报告它首先在哪里找到在当前上下文中语法无效的东西。

【讨论】:

  • 它只报告它首先在哪里找到在当前上下文中不符合语法的东西。 这一行解释了一切。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2011-09-28
  • 2017-07-23
  • 2012-09-15
  • 2017-03-22
相关资源
最近更新 更多