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

时间:2016-07-23 15:43:28

标签: python syntax-error

我绝对会把头发拉过来。此函数中的if / elif语句会在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")

2 个答案:

答案 0 :(得分:1)

将我的代码粘贴到我的Spyder IDE并运行后,我没有出现任何错误(除了print语句中缺少的括号外 - 你应该真正升级到Python 3.5.2!)

尝试通过重置缩进并添加三个制表符来重新缩进该行。当我复制并粘贴使用空格进行缩进的代码时,我会遇到类似的错误。

答案 1 :(得分:1)

您正在混合代码中的制表符和空格;获取您的初始帖子的来源并将其粘贴到Sublime Text中,然后选择我看到的所有行:

source code with spaces and tabs

灰线是标签,点是空格。我将标签设置为扩展到每个第4列,您可能具有相同的设置。

Python,它将标签扩展到每个第8个列,看到了:

same source with tabs set to 8 spaces

请注意elif缩进如何与前面的行匹配,因为这4个空格后面的制表符会扩展到第一个第8列,而不是第二列。这是您看到异常的原因。

不要混合标签和空格。优选地,坚持仅用于压痕的空间; ;这是Python styleguide recommends

  

空格是首选的缩进方法。

     

选项卡应仅用于与已使用选项卡缩进的代码保持一致。

将编辑器配置为仅使用空格 。你仍然可以使用 TAB 键,但你的编辑器会使用空格来缩进行。