这行Python代码的缩进有什么问题?

-2 投票
3 回答
11439 浏览
提问于 2025-04-16 04:55

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,有人可能在使用某个库时,发现它的某个功能没有按照预期工作。这种情况可能会让人感到困惑,因为我们不知道问题出在哪里。

通常情况下,解决这类问题的第一步是检查代码,确保没有拼写错误或者逻辑上的问题。有时候,问题可能出在我们对这个库的理解上,或者是我们没有按照它的要求来使用它。

另外,查看文档也是一个好办法。文档通常会提供使用示例和常见问题的解答,可以帮助我们更好地理解如何使用这个工具。

如果自己解决不了,向社区求助也是一个不错的选择。像StackOverflow这样的论坛上,有很多经验丰富的开发者,他们可能遇到过类似的问题,能够提供帮助。

总之,遇到问题时,不要着急,慢慢分析,查找资料,必要时寻求他人的帮助,通常都能找到解决办法。

def LCS(word_list1, word_list2):
    m = len(word_list1)
    n = len(word_list2)
    print m
    print n
      # An (m+1) times (n+1) matriword_list1
      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 个回答

1

我觉得这个问题是因为混用了缩进方式 - 有的地方用的是制表符(Tabs),有的地方用的是空格(Spaces)。

建议:每一级缩进使用4个空格,
绝对不要混合使用制表符和空格。
最大行长度:80个字符。

检查一下你的Python编辑器设置,

GEdit:

在工具 -> 首选项 -> 编辑器 -> 制表符宽度设置为4,并选择使用空格代替制表符。

Eclipse:

使用Pydev - http://pydev.org

VIM:

使用以下VIM设置 - 针对VIM编辑器

:set tabstop=4 expandtab shiftwidth=4 softtabstop=4
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

更新

原作者已经修正了上面的问题。我检查了一下代码,发现错误现在在别的地方:

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
3

当问题不断被编辑并且缩进被修正时,很难回答为什么缩进不正确。

不过,我建议你在写更多的Python代码之前,先看看PEP8,并且避免混用制表符和空格。这样可以帮助你理解为什么即使你已经修正了缩进,仍然会在第七行看到IndentationError的错误。

我还建议你尝试使用'-tt'命令行选项来检查你是否不小心混用了制表符和空格。当然,任何一个好的编辑器都能帮你区分制表符和空格,比如Vim的'list'选项

撰写回答