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

bub*_*son 4 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
>>>
Run Code Online (Sandbox Code Playgroud)

(这只是缩短代码以表明观点.)

我错过了什么吗?还有其他一些我不知道的魔术吗?

Ign*_*ams 9

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


phi*_*mue 7

它是有效的,如果你把整个东西放在一个函数中:

def test():
    while True:
        a=5
        if a<6:
            break
    print("hello")
Run Code Online (Sandbox Code Playgroud)

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