繁体   English   中英

if语句中的Python语法错误

[英]Python Syntax Error in if statement

我坚持使用Python if语句。 我几乎完成了所有工作,但是在运行progarmm时,它在第一行中给了我一个语法错误:我确定我做对了所有事情,但是由于我对Python和编程非常陌生,所以可能只是非常愚蠢的错误...感谢大家的帮助!

if a == 2:   
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]

如果这不是jramirez的答案所解决的IndentationError ,而是实际的SyntaxError ,则可能是if语句之前的行有问题。

在Python中,只要表达式在括号内,就可以跨多行继续表达式。 因此,如果在函数调用,元组或其他任何内容的结尾不小心遗忘了) ,则通常在下一行会收到一个神秘的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表达式的一个很好的开始, if 2 if a == 2: ;但是2 if a == 2:不是,则为2 if a == 2: 冒号将其强制为if语句,并且您不能在表达式中间放置一条语句。

第二个版本将构建一个元组,其值1 ,值2以及更多值在下一行继续。 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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM