在下面的程序中,输出应该打印程序中给出的矩阵螺旋中的整数列表。
输出为:[1, 2, 3, 6, 9, 8, 7, 4, 5, 5]
在输出列表的末尾,最后一个循环再次以相反的顺序打印(列表末尾的5
再次打印)。为什么?我的代码在哪里出错?
A = [
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
def spiralOrder(A):
result = []
t = 0
b = len(A)-1
l = 0
r = len(A[0])-1
d = 0
k = 0
while(t<=b and l<=r):
if d == 0:
for i in range(l,r+1):
result.append(A[t][i])
t =+ 1
d = 1
elif d == 1:
for i in range(t,b+1):
result.append(A[i][r])
r -= 1
d = 2
elif d == 2:
for i in range(r,l-1,-1):
result.append(A[b][i])
b -= 1
d = 3
elif d == 3:
for i in range(b,t-1,-1):
result.append(A[i][l])
l += 1
d = 0
return result
print spiralOrder(A)
答案 0 :(得分:2)
这是添加最后5个的第二个result.append()
语句。这是因为此时t
是错误的值。切换t =+ 1
t += 1
可解决此问题。
t =+ 1
与t = +1
或t = 1
相同(此处不会增加)。
t += 1
每次调用增加一个。
这是使用python debugger的主要候选人。许多IDE都内置了这个。在每个result.append()
语句上放置断点并逐步执行代码,您将很快看到出现了什么问题。
此外,您的变量名称完全是神秘的,并且很难确定您的代码尝试执行的操作。查看clean code and variable names,特别是如果您的代码将由其他任何人(例如SO的人)阅读。
答案 1 :(得分:1)
您正在更新t =+ 1
,而不是t += 1
。 (在d==0
条件下)。