在python 2.7中使用if语句的语法错误

问题描述:

我在Python代码中的“Syntax Error:invalid syntax”消息中遇到问题,这些代码一直在将目标帖子移到我身上。在python 2.7中使用if语句的语法错误

这里的示例代码:

another_answer = int(raw_input("> ") 

if another_answer == 1: 
    print "The pirate's body slowly goes limp and he whispers to you......." 
    print "Good luck my son. You might need this." 
    get_gold() 

    print: "Do you want to continue to the next room?" 

当我在shell我得到下面这条命令:

File "ex36.py", line 179 
    if another_answer == 1: 
         ^
SyntaxError: invalid syntax 

我发现这个奇怪的,除去冒号后我得到一个错误信息在下一行:

File "ex36.py", line 180 
print "The pirate's body slowly goes limp and he slowly whispers to you......." 
    ^
SyntaxError: invalid syntax 

我在上面找到的*中心的类似问题间距和缩进,但我已经看过,一切似乎都很好。

+0

那么,这里有一个缩进错误; 'if'语句必须与'another_answer ='语句具有相同的缩进级别。但是还有_another_语法错误导致您无法看到该错误。 – abarnert 2014-09-21 03:08:36

前行缺少一个右括号:

another_answer = int(raw_input("> ") 
#     ^  ^ ^^ 
#     \   \--// 
#      \-----------? 

Python允许用括号括起来的时候表达过的物理线路,所以当你关闭括号的Python继续寻找其余表达方式。当它到达:时,表达式就不再有意义了,并引发了一个异常。

+0

这是高兴的,但是,当我打开Python的问题时,我发现Martijn Pieters。有什么你不了解Python的吗?放手! – Nabin 2014-09-21 03:14:09

+0

之前已评论过类似评论,因为从第1天开始就是粉丝。:-) – Nabin 2014-09-21 03:14:43

+0

谢谢Martijn! – 2014-09-22 14:25:37

您在第一行缺少右括号。冒号只是第一个不可能成为实际函数参数一部分的字符。

你有两个问题,你必须解决这两个问题。

第一个是你缺少一个右括号:

another_answer = int(raw_input("> ") 

这意味着Python的仍然在试图编译参数调用int当它到达下一行。直到结肠,一切仍是合法的,因为你可以一直写这个:

another_answer = int(raw_input("> ") 
        if another_answer == 1 
        else '42') 

但是,一旦你到达结肠,有可能出现在没有有效的表达,因此,这就是你得到的SyntaxError

一般情况下,当你在一个行,其中绝对没有错看起来得到SyntaxError,看前行 - 通常这是一个缺少)(或]})。


但是,如果你解决了这个问题,你将会遇到另一个问题。虽然你声称这:

Similar questions I've found on * center around improper spacing and indentation, but I've looked that over and everything seems to be well.

...一切绝对是得好:

another_answer = int(raw_input("> ") 

    if another_answer == 1: 

if声明缩进到another_answer陈述的权利。这是违法的,并且会引起IndentationError。您只能在Python中更改缩进级别以进入或退出由复合语句控制的块。


你也是你的代码有至少一个以上的错误:

print: "Do you want to continue to the next room?" 

这将引发SyntaxErrorprint不是像ifdef这样的复合语句,所以它不需要冒号。

很容易发现您错过了第一行的右括号。