2016-07-23 262 views
0

我絕對會把我的頭髮拉出來。該函數中的if/elif語句在elif行上引發語法錯誤。對我來說,沒有明顯的語法問題。Python if/elif語法錯誤...爲什麼

"elif n == cs_index:" 
    ^
SyntaxError: invalid syntax 

我試着將它切換成熊「別的:」只是爲了看看這是否愚蠢的話,它沒有。我確定有些事我看不到。

def higherhighlight(cs_index): 
    text.tag_remove("the hello","1.0", END) 
    idex = "1.0" 
    for n in range(cs_index): 
     if n < cs_index: 
      idex = text.search("Hello", idex, nocase=1, stopindex=END) 
      lastidex = idex+"+"+str(len("hello"))+"c" 
      idex = lastidex 
     elif n == cs_index: 
      idex = text.search("Hello", idex, nocase=1, stopindex=END) 
      print idex 
      lastidex = idex+"+"+str(len("hello"))+"c" 
      print lastidex 
      text.tag_remove("hellos", idex, lastidex) 
      text.tag_add("the hello", idex, lastidex) 
    text.tag_config("the hello", background="dark green") 
+4

你是否檢查過你的代碼是否正確縮進? – tjohnson

+2

將代碼粘貼到我的IDE後沒有語法錯誤。必須是你的縮進。 –

+0

您是否混合了製表符和空格? – cdarke

回答

1

粘貼我的代碼爲我的Spyder的IDE和運行它之後,我沒有表現出錯誤(除了括號中print語句缺少 - 你應該升級到Python 3.5.2!)

嘗試通過重置縮進並添加三個選項卡來重新縮進該行。當我複製並粘貼使用空格縮進的代碼時,出現類似的錯誤。

1

您在代碼中混合了製表符和空格;把你的初始後的源並將其粘貼到文本崇高,然後選擇我看到這一切行:

source code with spaces and tabs

灰線標籤,點的空間。我將選項卡設置爲擴展到每個第四列,您可能具有相同的設置。

Python,它擴展選項卡每個欄,看到了這一點:

same source with tabs set to 8 spaces

注意elif壓痕如何前行匹配,因爲以下這4個空格的製表符擴展到第一列第八列,不是第二列。這是你看到的例外的原因。

不要混合標籤和空格。優選地,堅持用於縮進的空間;它是什麼Python styleguide recommends

空格是首選的縮進方法。

選項卡應完全用於與已使用製表符縮進的代碼保持一致。

配置您的編輯器使用空格只有。您仍然可以使用TAB鍵,但是當您這樣做時,您的編輯器將使用空格來縮進行。