IndentationError:unindent与任何外部缩进级别都不匹配

时间:2010-10-03 07:51:25

标签: python

def LCS(word_list1, word_list2):
    m = len(word_list1)
    n = len(word_list2)
    print m
    print n
    C = [[0] * (n+1) for i in range(m+1)]   # IndentationError: unindent does not match          any outer indentation level
    print C
    i=0
    j=0
    for word in word_list1:
        j=0
        for word in word_list2:
        if word_list1[i-1] == word_list2[j-1]: 
            C[i][j] = C[i-1][j-1] + 1
        else:
            C[i][j] = max(word_list1(C[i][j-1], C[i-1][j]))
        j+=1
    i+=1
    return C

3 个答案:

答案 0 :(得分:3)

当问题不断被编辑并且缩进得到纠正时,很难回答关于为什么缩进不正确的问题。

但是,我建议您在编写更多Python代码和PEP8之前先阅读avoid mixing tabs and spaces。这可以解释为什么在更正缩进后仍然在第7行看到IndentationError

我还建议您尝试使用'-tt' command-line option运行脚本,以确定何时意外混合制表符和空格。当然,任何体面的编辑器都能够突出显示标签与空格(例如Vim's 'list' option)。

答案 1 :(得分:1)

这两行

  C = [[0] * (n+1) for i in range(m+1)]   # IndentationError: unindent does not match          any outer indentation level
print C

应该缩进到同一级别。即:

C = [[0] * (n+1) for i in range(m+1)]
print C

<强>更新

Op已经纠正了上述问题。我检查了代码,错误现在在其他地方:

for word in word_list2:
if word_list1[i-1] == word_list2[j-1]: 
    C[i][j] = C[i-1][j-1] + 1
else:
    C[i][j] = max(word_list1(C[i][j-1], C[i-1][j]))
j+=1

应该是:

for word in word_list2: 
    # These lines have been indented extra.
    if word_list1[i-1] == word_list2[j-1]: 
        C[i][j] = C[i-1][j-1] + 1
    else:
        C[i][j] = max(word_list1(C[i][j-1], C[i-1][j]))
    j+=1

答案 2 :(得分:1)

我认为应该使用混合缩进 - 制表符和空格

推荐:每个缩进级别使用4个空格,
切勿混合标签和空格。 最大线长:80

检查你的Python - 编辑器的设置,

的gedit:

来自工具 - &gt;偏好 - &gt;编辑 - &gt; Tab Width = 4并使用Spaces而不是Tabs

蚀:

使用Pydev - http://pydev.org

VIM:

使用以下vim设置 - 对于vim编辑器

:set tabstop=4 expandtab shiftwidth=4 softtabstop=4