版本:Python 3.3.2(默认,2013年9月11日,20:16:42)
嘿 我正在用python进行一些测试,在shell上摆弄一下,但是我得到了一个奇怪的错误。
>>> a = 5
>>> if a > 0:
... print("a is a positive number.")
... if a < 0:
File "<stdin>", line 3
if a < 0:
^
SyntaxError: invalid syntax
我不知道为什么会出现此错误。我知道我可以使用elif,但我只是想测试一下。 帮助
答案 0 :(得分:4)
当它位于模块中时,这是有效的Python语法,但在交互式解释器中,您需要使用空行分隔代码块。
这里方便的经验法则是,您无法使用if
,def
,class
,for
,while
开始新的阻止, with
或try
,除非您有>>>
提示。
答案 1 :(得分:0)
REPL仍然在处理前一个代码块。单独输入一个空行以首先终止它。
答案 2 :(得分:0)
你的print
语句后需要一个空行,Python解释器认为你继续阻止,直到你这样做,所以你的第二个if
语句会出现缩进错误。这不是“无效”,交互式解释器旨在以这种方式工作。
答案 3 :(得分:0)
您是否按退格键输入第二个if
?外壳不喜欢这样。它期望逻辑块中的另一行,或者能够执行块(通过再次按下输入)。 shell一次只能执行一个块,即先完成第一个if
,然后输入第二个if
。您可以使用elif
,因为它仍被视为同一逻辑块的一部分。