Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我会得到;SyntaxError:“;在OSX Python 3.4上?_Python_Python 3.x_Osx Yosemite - Fatal编程技术网

为什么我会得到;SyntaxError:“;在OSX Python 3.4上?

为什么我会得到;SyntaxError:“;在OSX Python 3.4上?,python,python-3.x,osx-yosemite,Python,Python 3.x,Osx Yosemite,我刚买了一个新的MacBook 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. 我键入:

我刚买了一个新的MacBook 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
文件“”,第4行
打印(“你好世界”)
^
SyntaxError:无效语法
我的猜测是错误出现在“print”(“Hello World”)”上,但我不知道为什么,如果我希望它在循环完成后运行,我不需要缩进它。任何帮助都将不胜感激

注意到“…”提示了吗?这意味着交互式口译员知道你身处困境。在执行最终打印语句之前,必须输入一个空行以终止块


这是一个交互运行的工件——当你将代码输入到一个文件中时不需要空白行。

你必须使用空格来缩进(和);“分开”两个指令:

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


Hello
Hello
Hello
Hello
Hello
>>> 

因为它是语法错误

>>> while counter > 0:
...     counter -= 1
...     print()
... print("Hello World")
这就是python控制台的工作方式—您可以看到,打印前有三个点(“hello world”),这表明python仍然需要属于while块的indended代码


您需要双击enter键才能进入正常模式。(由>>>发出信号)。今后,如果遇到类似问题,请始终尝试从文件而不仅仅是从控制台运行这些问题。

这是由于python的交互模式的一个怪癖造成的,该模式专门处理换行符

当出现
..
提示时,它后面必须是前面复合语句的延续,而不是新语句的开头,这将在非交互模式下发生。再次按enter键可使
..
提示消失


观察者认为这是失败的:

echo $'while False: pass\npass' | python -i
但这是可行的:

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


你可以阅读细节。交互输入使用
单一输入
开始状态,非交互输入使用
文件输入
开始状态。

你必须做两行!愚蠢的解释器。这甚至不是正确的错误类型。应该是
缩进错误
!自己获取ipython我有PyCharm,但我想在终端上试用,因为我从来没有使用过b4。OP使用空格进行缩进。我想你已经错过了问题的重点。通常,删除一级缩进会结束一个块,但在交互运行时不会。请,为什么“-1”?谢谢advance@BryanOakley:所以我试着在答案中解释它。但是有时候tab在shell中不太好用,但是空格在任何地方都可以用。要把指令很好地分开,你必须使用“;”。不?我不对?@Clodion我想他们“-1”批评你,因为你错过了部分解释。我不想运行“Hello World”有五次,我想在while循环的五个空格后运行它。显然,没有先运行while循环是不行的。(除非我在一个函数/方法中运行)。我仍然很感激你试图帮助我,很抱歉你被否决了。@lokilindo:是的。我打了“你好”只是为了算出空行。这是为了表明他必须在完成时将其放在
之后。我在第一次评论中已经说过了(下面是问题)。但是我如何运行
打印(“Hello World”)
而不必先运行
吗?如果我想一个接一个地运行它们,我必须先将它们构建到一个函数中吗?@lokilindo:不行。我想这就是你取消最后打印语句缩进的原因。如果你想让它成为循环的一部分,就缩进到循环中。如果你想在后面输入一个空行。while循环将运行,然后最终的print语句将运行。这就是交互模式的工作方式。