2014-10-08 88 views
1

今天我一直在Python中学习“for循环”。我在Python Shell中键入代码,SyntaxError: invalid syntax出现在功能print("I finished")后面,并且文字print显示为红色。for循环中的打印函数的语法无效

words = ["cat", "125", "dog", "pig"] 
for word in words: 
    if word == "125": 
     print("No spam please!") 
     break 
    print("Nice " + word) 
else: 
    print("I am lucky: No spam.") 
print("I finished") 

但是,当我写在记事本中的代码,并保存为*.py,并且比命令提示符运行它正常工作,并配备:

Nice cat 
No spam please! 
I finished 

什么是第三个“打印”功能,错了吗?

+0

我不明白为什么“无效语法”出现。在命令提示符下它正常工作。 – mahau 2014-10-08 18:24:27

+0

你可能有一些cr + lf混合了一些cr只有行结束。 记事本必须纠正这一点。 – 2014-10-08 20:47:59

回答

4

在交互式Python shell中,通常需要在最外层的if/else/for/while/whatever块的末尾和下一个语句的开头之间留出空行。

else: 
    print("I am lucky: No spam.") 

print("I finished") 

作为一个简单的例子:没有空行导致错误:

>>> if True: 
...  print("!") 
... print("finished") 
    File "<stdin>", line 3 
    print("finished") 
     ^
SyntaxError: invalid syntax 

留下一个空的空间,使其工作:

>>> if True: 
...  print("!") 
... 
! 
>>> print("finished") 
finished 

一般来说,尽量不开始以“...”开头的“延续线”上的新陈述。按Enter直到你看到“>>>”,然后你就可以走了。

+0

它真的会更好地展示在Python 3而不是2,因为使用3.x的新手很可能会混淆你的也是一个SyntaxError-in-3.x'print'语句。 – abarnert 2014-10-08 19:34:47

+0

@abarnert,编辑。 – Kevin 2014-10-08 19:37:37

+0

我也喜欢最后添加的最后一句话。 (唯一的问题是当你试图粘贴到终端中,并且你不能总是避免它......但是如果你正在做很多粘贴到终端中,你可能需要IPython或IDE ......) – abarnert 2014-10-08 19:41:52