在Python 3中,这在从文件导入时有效:
myInt = 0
while (myInt < 10):
print (myInt, end='')
myInt += 1
print (' are Numerals.')
产生预期的结果:“ 0123456789是数字。”
但是,如果代码直接粘贴到解释器中,则最后一行会产生异常。实际上,在while块退出之后,一切都会发生:
File "<stdin>", line 4
print (' are Numerals.')
^
SyntaxError: invalid syntax
[以下是对François的答复,重点是问题的形式。]
使用尾随","
构造在Python 2中也不起作用...
在while块之后添加空白行不起作用,因为它显然不会产生所需的结果,即“ 0123456789是数字”。 但是,在让·弗朗索瓦(Jean-François)的领导下,会产生类似的结果:
myInt = 0
res=""
while (myInt < 10):
res += str (myInt)
myInt += 1
res += ' are my Numerals.'
print (res)
但是有什么方法可以强制在解释器中的while块的结尾使打印(或字符串编译,或其他方式)继续进行吗? 好吧,当我使用else并一次输入以下内容时,我可以产生结果:
>>> myInt = 0
>>> while (myInt < 10):
... print (myInt, end='')
... myInt += 1
... else:
... print (' are Numerals.')
...
0123456789 are Numerals.
但是当我将整个代码复制/粘贴到解释器中时,会引发异常。那么将复制粘贴到解释器中并一次键入一行有什么区别?我现在更好奇了!
答案 0 :(得分:10)
解释器期望以非常特定的形式输入多行语句。您可以通过一次输入一行来看到这一点。
>>> myInt = 0
>>> while (myInt < 10):
... print (myInt, end='')
... myInt += 1
... print (' are Numerals')
在多行语句之后,解释器期望空白行表示块的结尾。当它立即遇到新的,不缩进的语句时,就会感到困惑。
在while
循环结束后添加空白行将使解释器理解您的块。请记住,Python解释器总是一次运行一个语句。复制粘贴多行时,实际上是将它们作为完全独立的语句运行,并且在解释器中,多行语句必须由换行符终止。