2014-10-08 54 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