这行Python代码的缩进有什么问题?
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,有人可能在使用某个库时,发现它的某个功能没有按照预期工作。这种情况可能会让人感到困惑,因为我们不知道问题出在哪里。
通常情况下,解决这类问题的第一步是检查代码,确保没有拼写错误或者逻辑上的问题。有时候,问题可能出在我们对这个库的理解上,或者是我们没有按照它的要求来使用它。
另外,查看文档也是一个好办法。文档通常会提供使用示例和常见问题的解答,可以帮助我们更好地理解如何使用这个工具。
如果自己解决不了,向社区求助也是一个不错的选择。像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 个回答
我觉得这个问题是因为混用了缩进方式 - 有的地方用的是制表符(Tabs),有的地方用的是空格(Spaces)。
建议:每一级缩进使用4个空格,
绝对不要混合使用制表符和空格。
最大行长度:80个字符。
检查一下你的Python编辑器设置,
GEdit:
在工具 -> 首选项 -> 编辑器 -> 制表符宽度设置为4,并选择使用空格代替制表符。
Eclipse:
使用Pydev - http://pydev.org
VIM:
使用以下VIM设置 - 针对VIM编辑器
:set tabstop=4 expandtab shiftwidth=4 softtabstop=4
这两行
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
当问题不断被编辑并且缩进被修正时,很难回答为什么缩进不正确。
不过,我建议你在写更多的Python代码之前,先看看PEP8,并且避免混用制表符和空格。这样可以帮助你理解为什么即使你已经修正了缩进,仍然会在第七行看到IndentationError
的错误。
我还建议你尝试使用'-tt
'命令行选项来检查你是否不小心混用了制表符和空格。当然,任何一个好的编辑器都能帮你区分制表符和空格,比如Vim的'list'
选项。