Python if/elif语法错误...为什么

Python if/elif语法错误...为什么

问题描述:

我绝对会把我的头发拉出来。该函数中的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

粘贴我的代码为我的Spyder的IDE和运行它之后,我没有表现出错误(除了括号中print语句缺少 - 你应该升级到Python 3.5.2!)

尝试通过重置缩进并添加三个选项卡来重新缩进该行。当我复制并粘贴使用空格缩进的代码时,出现类似的错误。

您在代码中混合了制表符和空格;把你的初始后的源并将其粘贴到文本崇高,然后选择我看到这一切行:

source code with spaces and tabs

灰线标签,点的空间。我将选项卡设置为扩展到每个第四列,您可能具有相同的设置。

Python,它扩展选项卡每个栏,看到了这一点:

same source with tabs set to 8 spaces

注意elif压痕如何前行匹配,因为以下这4个空格的制表符扩展到第一列第八列,不是第二列。这是你看到的例外的原因。

不要混合标签和空格。优选地,坚持用于缩进的空间;它是什么Python styleguide recommends

空格是首选的缩进方法。

选项卡应完全用于与已使用制表符缩进的代码保持一致。

配置您的编辑器使用空格只有。您仍然可以使用TAB键,但是当您这样做时,您的编辑器将使用空格来缩进行。