2012-05-31 45 views
2

我假設這將會非常容易回答,但我已經搜遍了所有內容,找不到答案。我正在學習Python,並嘗試運行一些非常簡單的代碼,但是當我嘗試在縮進塊後執行某些操作時,我總是收到語法錯誤。例如:由於縮進導致的Python IDLE(Mac OS X)中的語法錯誤

x = [1,2,3]; 
for i in x: 
    print(i); 
print('finished'); 

當我運行此代碼時,在打印('已完成')部件上出現語法錯誤。任何時候我嘗試通過在像循環或if語句之類的塊之後進行unindenting來運行任何操作,我都會遇到此錯誤。我在Mac OS X Lion的IDLE中運行Python 3.2.3。

更新:看起來這不像我想的那麼簡單,也許我試圖讓某些工作變得毫無意義。我猜當你運行一個縮進的塊時,shell只會運行多行語句,但是當你回到最高層時它會執行這些語句。由於我通常在使用文件,最有可能在Django中,最終無關緊要。感謝所有驚人的快速反應。

+4

不是你的問題,但Python不需要分號來結束行。 –

+0

看我的答案:使用IDLE編輯窗口。 –

回答

3

至少我的Ubuntu系統上python交互式解釋需要一個換行符結束塊:

>>> x = [1,2,3]; 
>>> for i in x: 
...  print(i); 
... print('finished'); 
    File "<stdin>", line 3 
    print('finished'); 
     ^
SyntaxError: invalid syntax 
>>> x = [1,2,3]; 
>>> for i in x: 
...  print(i); 
... 
1 
2 
3 
>>> print('finished'); 
finished 

夠搞怪,該python解釋並不當腳本運行所需的空行:

$ cat broken.py 
#!/usr/bin/python 

x = [1,2,3]; 
for i in x: 
    print(i); 
print('finished'); 

$ ./broken.py 
1 
2 
3 
finished 
$ 
+1

語言本身不需要換行符,但基本的交互式解釋程序無法弄清楚縮進的塊沒有一個就結束了,對於IDLE也是如此。 (其他一些IDE可能更聰明一些。) – abarnert

+0

事情是,我該如何添加它想要的換行符?如果我在循環中敲入回車,它會轉到另一行,但如果我是unindent並回車,它會執行代碼 – Rocket04

+0

@ Rocket04:如果您正在定義函數或方法,則必須等待整個函數定義在執行代碼之前調用__。 – sarnold

1

取出所有分號。

x = [1,2,3] 
for i in x: 
    print(i) 
print('finished') 
+0

這絕對是一個很好的建議,因爲其他原因,但與手頭的問題完全無關。 – abarnert

+0

這個腳本在Windows上適用於我。 – Tremmors

+0

我試過了,沒有奏效。 – Rocket04

1

print(i)之後插入換行符(同樣在窗口

x = [1, 2, 3] 
for i in x: 
    print(i) 

print('finished') 
+0

我曾嘗試過,也沒有工作。 – Rocket04

+0

它在'windows'上適用於我。 – user278064

1

你們是不是在IDLE的默認Python Shell窗口中輸入驗證碼?最好打開一個IDLE編輯器窗口(菜單項File - >New Window)並從那裏運行代碼(菜單項Run - >Run Module)。在shell窗口縮進會變得混亂,很難糾正錯誤。