为什么Python 3.1在循环后打印时会抛出一个SyntaxError?

时间:2010-05-09 10:41:05

标签: python syntax-error

我正在尝试在Python 3.1控制台中运行此代码段并且我收到了SyntaxError:

>>> while True:
...     a=5
...     if a<6:
...             break
... print("hello")
  File "<stdin>", line 5
    print("hello")
        ^
SyntaxError: invalid syntax
>>>

(这只是为了说明问题而缩短的代码。)

我错过了什么吗?还有其他魔法我不知道吗?

2 个答案:

答案 0 :(得分:9)

您必须在REPL中输入一个空行才能完成当前程序段,然后才能输入新的,未缩进的代码行。

答案 1 :(得分:7)

如果你将整个事情放在一个函数中,它是有效的:

def test():
    while True:
        a=5
        if a<6:
            break
    print("hello")

如果你试图在函数之外(仅在解释器中)执行它,它不知道如何评估整个事情,因为它只能在解释器中一次处理一个语句。你的while循环就是这样一个声明,你的print东西就是这样的声明,你有两个声明,但解释器只有一个。