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
答案 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 - 编辑器的设置,
来自工具 - &gt;偏好 - &gt;编辑 - &gt; Tab Width = 4并使用Spaces而不是Tabs
使用Pydev - http://pydev.org
使用以下vim设置 - 对于vim编辑器
:set tabstop=4 expandtab shiftwidth=4 softtabstop=4