Why am I getting "SyntaxError:" on OS X Python 3.4?
Why am I getting "SyntaxError:" on OS X Python 3.4?
我刚买了一台新的 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")' 上,但我不知道为什么,如果我想让它在循环结束后 运行 就不需要缩进完成的。任何帮助将不胜感激。
注意到“...”提示了吗?这告诉你交互式解释器知道你在一个块中。在执行最后的打印语句之前,您必须输入一个空行来终止该块。
这是 运行 交互式的产物 -- 在文件中键入代码时不需要空行。
您必须使用 space 进行缩进(和“;”分隔两条指令:
>>> counter = 5
>>> while counter > 0:
counter -= 1
print("Hello")
Hello
Hello
Hello
Hello
Hello
>>>
因为语法错误。
>>> while counter > 0:
... counter -= 1
... print()
... print("Hello World")
这就是 python 控制台的工作方式 - 您可以看到在 print('hello world') 之前有三个点,这表明 python 仍然期望 indendted属于while块的代码。
您需要双击回车才能进入正常模式。 (由 >>> 发出信号)。此外,如果您将来遇到类似问题,请始终尝试 运行 从文件中而不是仅从控制台中找到它们。
这是由 python 的交互模式的一个怪癖引起的,它特别对待换行符。
当您有 ...
提示时,它 之后必须 是前面复合语句的延续,而不是新语句的开头,它将处于非交互模式。再次按回车键使 ...
提示消失。
观察者失败:
echo $'while False: pass\npass' | python -i
但这行得通:
echo $'while False: pass\npass' | python
您可以阅读详细信息 in the grammar reference。交互式输入使用single_input
开始状态,非交互式输入使用file_input
开始状态。
我刚买了一台新的 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")' 上,但我不知道为什么,如果我想让它在循环结束后 运行 就不需要缩进完成的。任何帮助将不胜感激。
注意到“...”提示了吗?这告诉你交互式解释器知道你在一个块中。在执行最后的打印语句之前,您必须输入一个空行来终止该块。
这是 运行 交互式的产物 -- 在文件中键入代码时不需要空行。
您必须使用 space 进行缩进(和“;”分隔两条指令:
>>> counter = 5
>>> while counter > 0:
counter -= 1
print("Hello")
Hello
Hello
Hello
Hello
Hello
>>>
因为语法错误。
>>> while counter > 0:
... counter -= 1
... print()
... print("Hello World")
这就是 python 控制台的工作方式 - 您可以看到在 print('hello world') 之前有三个点,这表明 python 仍然期望 indendted属于while块的代码。
您需要双击回车才能进入正常模式。 (由 >>> 发出信号)。此外,如果您将来遇到类似问题,请始终尝试 运行 从文件中而不是仅从控制台中找到它们。
这是由 python 的交互模式的一个怪癖引起的,它特别对待换行符。
当您有 ...
提示时,它 之后必须 是前面复合语句的延续,而不是新语句的开头,它将处于非交互模式。再次按回车键使 ...
提示消失。
观察者失败:
echo $'while False: pass\npass' | python -i
但这行得通:
echo $'while False: pass\npass' | python
您可以阅读详细信息 in the grammar reference。交互式输入使用single_input
开始状态,非交互式输入使用file_input
开始状态。