我被 Python if 语句困住了。我完成了几乎所有的事情,但是当运行我的程序时,它在第一行给了我一个语法错误:我确信我做的一切都是正确的,但由于我对Python和编程非常陌生,它可能只是一个非常愚蠢的错误... 谢谢你们的帮助!
if a == 2:
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]
如果这不是 jramirez 的答案修复的
IndentationError
,而是实际的 SyntaxError
,则可能是 if
语句之前行的问题。在 Python 中,您可以跨多行继续表达式,只要表达式位于括号内即可。因此,如果您不小心在函数调用、元组或其他任何内容的末尾遗漏了
)
,您通常会在next
行上看到一个神秘的
SyntaxError
。例如这段代码:
foo = (1, 2
if a == 2:
pass
…会给出这个错误:
if a == 2:
^
SyntaxError: invalid syntax
只需添加另一个逗号即可将错误移至不同的位置!
foo = (1, 2,
if a == 2:
pass
if a == 2:
^
SyntaxError: invalid syntax
为什么?好吧,即使您准确理解这些错误的含义,它们仍然没有多大帮助。首先,请记住:
如果您在完全有效的行上得到
SyntaxError
,请在上面的行中查找缺失的
)
(或
]
或
}
,或额外的
\
,或一些其他特殊情况)。如果你能找到一个编辑器来帮助你匹配括号和方括号,那么这个问题的可能性就会大大降低。 (例如,使用 emacs,至少按照我设置的方式,它会自动尝试为我缩进
if
第 7 行字符,如果我“修复”它,它会反击我,并且最终很难不注意到有些问题。然后我指着第一个
(
,它告诉我它是无与伦比的。)但是如果你想知道,请看这里:
第一个版本构建一个值为
1
的元组,然后是一个以
2
开头并继续到下一行的值。对于三元
2 if a == 2
表达式来说,
if
是一个完美的开始,但
2 if a == 2:
则不是;冒号强制它成为一个
if
语句,并且您不能将语句放在表达式中间。第二个版本构建一个元组,其中包含值
1
、值
2
,以及更多值(在下一行继续)。
if
不能作为任何有效表达式的开头,因此您会更早地得到
SyntaxError
。当然,但还不够早,无法发挥作用。
if a == 2:
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]
---- four spaces of indentation
if a == 2:
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]