为什么我在OS X Python 3.4上得到“SyntaxError:”?

时间:2015-07-28 21:46:31

标签: python python-3.x osx-yosemite

我刚买了一台新的MackBook Pro并安装了Python 3.4。 我跑了终端并输入了

python3.4

我得到了:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

我打字:

>>> print("Hello world") 
Hello world

一切都很好,但当我尝试做一些更复杂的事情时,我遇到了麻烦,我做了:

>>>counter = 5
>>>
>>> while counter > 0:
...     counter -= 1
...     print()
... print("Hello World")

我收到错误:

  File "<stdin>", line 4
print("Hello World")
    ^
SyntaxError: invalid syntax

我的猜测是错误发生在'print(“Hello World”)'但是我不知道为什么,如果我希望它在循环结束后运行,我不需要缩进它。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

注意“...”提示?这告诉你,交互式解释器知道你在一个街区。在完成最终的打印声明之前,您必须输入一个空行来终止块。

这是一个以交互方式运行的工件 - 当您将代码键入文件时,不需要空行。

答案 1 :(得分:1)

因为它是语法错误。

>>> while counter > 0:
...     counter -= 1
...     print()
... print("Hello World")

这就是python控制台的工作方式 - 你可以看到你在打印之前有三个点('hello world'),这表明python仍然需要属于while块的 indendted 代码。

您需要双击Enter才能进入正常模式。 (由&gt;&gt;&gt;表示)。此外,如果您遇到类似的问题,总是尝试从文件而不是从控制台运行它们。

答案 2 :(得分:0)

这是由python的交互模式的怪癖引起的,它专门处理换行。

当你有一个...提示符时,必须后面跟着前面的复合语句的延续,而不是新语句的开头,它将在非交互式语句中模式。再次按Enter键使...提示消失。

观察到此失败:

echo $'while False: pass\npass' | python -i

但这有效:

echo $'while False: pass\npass' | python

您可以阅读详细信息in the grammar reference。交互式输入使用single_input开始状态,非交互式输入使用file_input开始状态。

答案 3 :(得分:-2)

您必须使用空格进行缩进(和“;”分隔两条指令:

>>> counter = 5
>>> while counter > 0:
    counter -= 1
    print("Hello")


Hello
Hello
Hello
Hello
Hello
>>>