if 语句中的 Python 语法错误[重复]

问题描述 投票:0回答:3

我被 Python if 语句困住了。我完成了几乎所有的事情,但是当运行我的程序时,它在第一行给了我一个语法错误:我确信我做的一切都是正确的,但由于我对Python和编程非常陌生,它可能只是一个非常愚蠢的错误... 谢谢你们的帮助!

if a == 2:   
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]
python syntax syntax-error
3个回答
8
投票

如果这不是 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
。当然,但还不够早,无法发挥作用。


2
投票
您应该发布您看到的错误,但是我认为您需要的只是 if 语句之后的缩进

if a == 2: StartDeckNeighbourright = StartDeck[a + 1] StartDeckNeighbourright2 = StartDeck[a + 2] ---- four spaces of indentation
    

-1
投票
在Python中你必须使用缩进:

if a == 2: StartDeckNeighbourright = StartDeck[a + 1] StartDeckNeighbourright2 = StartDeck[a + 2]
    
© www.soinside.com 2019 - 2024. All rights reserved.