我被 Python if 语句困住了。我几乎完成了所有工作,但是在运行我的 progarmm 时,它在第一行给出了一个语法错误:我很确定我做的一切都是正确的,但是由于我对 Python 和编程非常陌生,它可能只是一个非常愚蠢的错误...感谢您的帮助!
if a == 2:
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]
我被 Python if 语句困住了。我几乎完成了所有工作,但是在运行我的 progarmm 时,它在第一行给出了一个语法错误:我很确定我做的一切都是正确的,但是由于我对 Python 和编程非常陌生,它可能只是一个非常愚蠢的错误...感谢您的帮助!
if a == 2:
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]
如果这不是IndentationError
jramirez 的答案所修复的,而是实际的,则可能是语句之前的SyntaxError
行有问题。if
在 Python 中,只要表达式在括号内,就可以跨多行继续表达式。因此,如果您)
在函数调用、元组或其他任何内容的末尾不小心遗漏了 a,您通常会在下一行得到一个神秘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
在完全有效的行上得到 a ,请在上面的行中查找缺失的)
(或]
或}
,或额外的\
,或其他一些特殊情况)。
如果你能得到一个可以帮助你匹配括号和括号的编辑器,那么这个问题的可能性就会大大降低。(例如,使用 emacs,至少按照我的设置方式,它会自动尝试if
为我缩进第 7 行字符,如果我“修复”它,它会反击我,最终它'很难不注意到有什么问题。然后我指着第一个(
,它告诉我它是无与伦比的。)
但如果你想知道,这里是:
第一个版本使用 value 构建一个元组,然后是一个从下一行1
开始并继续的值。对于三元表达式来说是一个非常好的开始,但不是;冒号强制它成为一个语句,并且您不能将语句放在表达式的中间。2
2 if a == 2
if
2 if a == 2:
if
第二个版本构建一个元组,其中 value 1
、 value2
和更多值在下一行继续。if
不能是任何有效表达式的开始,所以你得到SyntaxError
更早的。但是,当然,还不够早到有用。
您应该发布您看到的错误,但是我认为您需要的只是 if 语句之后的缩进
if a == 2:
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]
---- four spaces of indentation
在 python 中你必须使用缩进:
if a == 2:
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]