def matrixADD(A,B):
minilist=[]
Z = []
a=-1
b=-1
由于某种原因,未遵循while循环中的条件,因此索引超出范围。要修复它,我必须在下面添加嵌套的if语句来打破循环。非常奇怪我想知道为什么没有if语句就无法工作?
while len(A)!=len(Z):
x=-1
y=-1
a=a+1
b=b+1
if len(minilist)!=0:
Z.append(minilist)
if len(A)==len(Z):
break
minilist=[]
while len(A[a])!=len(minilist):
for numbers in A[a]:
x=x+1
y=y+1
answer=(A[a][x]+B[b][y])
minilist.append(answer)
return Z
def main():
#Test matrices
A = [[2,4], [7,0], [6,3]]
B = [[3,1], [-1,8], [-3, 3]]
Z=matrixADD(A,B)
print("A + B:",Z)
main()
你好。
我写了这个程序,它运行得很好,但我遇到了一件事(如上所示)
感谢您的输入人员:)
答案 0 :(得分:1)
看起来你希望循环在添加元素后立即结束,导致列表大小匹配。这不是循环的工作方式。
while
循环条件仅在循环的每次迭代开始时进行测试。如果它在循环中间停止,则Python不会注意到下一次迭代的开始,并且只有在此时它仍然不正确。如果您希望在循环中间测试循环条件,则需要使用类似if
语句的方法对其进行手动测试,或者需要重新组织循环。