【问题标题】:Why am I getting an 'Invalid syntax' error after an IF condition?为什么在 IF 条件后出现“无效语法”错误?
【发布时间】:2020-04-21 22:22:00
【问题描述】:

我有一个带有 if 条件的 Python 程序,它检查一个项目是否不在字典中,如果不在则抛出错误。否则代码应该继续运行。但是,我在 if 条件之后收到与下一行代码相关的“无效语法”错误,我不明白为什么。如果单独运行该代码行可以正常工作,但如果与 if 语句一起运行则不行。我在程序中有多个异常,所以我不希望它们和剩余的代码都包含在 elif 条件的层次结构中。据我了解,我看不出这段代码有什么问题,所以如果有人能指出造成这种情况的原因,我将不胜感激。

这是一个示例代码,它也产生相同的错误和相关的错误消息。

代码示例:

item = 'a'
item_dict = {
    'a': ['A1','A2','A3'],
    }

if item not in item_dict:
    raise Exception("Error")

# Extract the relevant add on codes from the dictionary.
item_codes = item_dict.get(item)

错误信息:

File "<stdin>", line 5
item_codes = item_dict.get(item)
         ^
SyntaxError: invalid syntax

编辑:我修复了示例代码中的拼写错误,但仍然收到相同的语法错误。请注意,仅当我将此代码块作为一个代码块运行时才会发生错误。如果我全部运行它,不包括分配 item_codes 变量的底线,然后自行运行该行,它很好并产生预期的结果,但我正在编写的代码需要作为一个完整的程序运行。

【问题讨论】:

  • 你声明了item_dict然后尝试访问items_dict?
  • 修复了声明 item_dict 的问题,但尝试访问 items_dict 后,此代码对我有用。
  • 抱歉,我正在更改变量名称并简化示例代码,这是一个错误。修复此问题后,代码会产生相同的错误。
  • 这是唯一的问题,如果您在第 2 行中将变量名称修复为 items_dict,它可以正常工作
  • 如果您仍然遇到同样的问题,那么您运行的代码与您在此处共享的代码不同,因为此处的代码在更新时没有拼写错误是可以的

标签: python syntax syntax-error


【解决方案1】:

你没有在 if 块之后给它一个换行符。 我没有改变任何其他东西,它正在工作。

item = 'a'
item_dict = {'a': ['A1','A2','A3']}

if item not in item_dict:
    raise Exception("Error")

item_codes = item_dict.get(item)

看看这个

>>> if item not in item_dict:
...   print("hi")
... print("hhi")
  File "<stdin>", line 3
    print("hhi")
        ^
SyntaxError: invalid syntax

在 cmd 中, if 之后的语句被视为 if 的一部分,因此它需要一个制表符。

你需要添加一个新行,就是这样。

【讨论】:

  • 谢谢 - 这解决了它。我放了一个新行,但似乎新行在我的代码中缩进了,这里没有复制。删除行中的缩进后,代码运行正常。
【解决方案2】:

我可以重现您的语法错误的唯一方法是,例如,如果我在上一行中省略了右括号

item = 'a'
items_dict = {
    'a': ['A1','A2','A3'],
    }
if item not in items_dict:
    raise Exception("Error"   #here i have left off the closing parenthesis

item_codes = items_dict.get(item)

#ERROR#
  File "<ipython-input-13-919d98974d80>", line 5
    item_codes = items_dict.get(item)
             ^
SyntaxError: invalid syntax

在编写代码之前仔细检查行,看看是否遗漏了右大括号或 qoute 或其他内容

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多