我刚买了一台新的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”)'但是我不知道为什么,如果我希望它在循环结束后运行,我不需要缩进它。任何帮助将不胜感激。
答案 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
>>>