2010-11-24 111 views
6

我有一段簡單的代碼,我不知道我的錯誤來自哪裏。解析器在第5行發出意外縮進(if語句)。有沒有人在這裏看到這個問題?我不。Python中出現意外的縮進錯誤

def gen_fibs(): 
    a, b = 0, 1 
    while True: 
     a, b = b, a + b 
     if len(str(a)) == 1000: 
      return a 

回答

12

如果您只是複製+粘貼您的代碼,那麼您使用了與if語句一致的行上的選項卡。 Python的解釋製表符作爲8個空格,而不是4,千萬不要使用製表符與Python :)

1或至少不用不完混合製表符和空格。爲了與python宇宙的其他部分保持一致,最好使用4個空格。

1

檢查您是否將選項卡與空格或其他東西混合,因爲您的代碼逐字粘貼不會產生任何錯誤。

+1

是的,就是這樣。我使用Mac上的TextMate編寫我的代碼,並使用Tab鍵縮進(它放在4個空格中)。在編輯器中它看起來很好,但是當我把它粘貼在這裏時,if語句中有一個額外的選項卡。我把它切換到手動四個空格,它工作。離奇。 – tjsimmons 2010-11-24 04:38:37

+1

您可以將TextMate設置爲始終在.py文件中使用空格。 – 2010-11-24 06:54:34

1

a, b = b, a + b的行縮進8個空格,而if行縮進4個空格和一個選項卡。配置你的編輯器永遠不會插入標籤。

(Python認定爲8個空格選項卡,但它更容易只是不使用它們)

4

你混合製表符和空格。標籤爲總是爲了縮進而將其視爲與8個空格相同。使用python -tt運行腳本進行驗證。

-1

檢查每行前面的空格是否輸入正確。您可能鍵入了製表符而不是空格 - 嘗試刪除所有空間並更改它,以便僅使用製表符或僅使用空格。