矩阵相加函数输出异常求助:直接运算正确但函数返回结果错误
矩阵相加函数输出异常的排查与修复
问题根源
你编写的sum函数中,return o语句被错误地放在了内层for循环的内部。这意味着程序在第一次执行o[0][0] = m[0][0] + n[0][0]后,就立即返回了结果矩阵,后续的循环迭代根本没有机会执行,所以矩阵里剩下的元素都保持初始值0,最终输出[[5, 0], [0, 0]]。
修复后的代码
把return o移到两层循环的外面,确保所有元素都完成相加后再返回结果:
a = [[1,1],[2,2]] #first matrix b = [[4,4],[3,3]] #second matrix #creating a function to add to two matrices and return the sum def sum(m,n): o = [[0,0],[0,0]] for i in range(2): for j in range(2): o[i][j] = m[i][j] + n[i][j] return o # 移到循环外部 ans = sum(a,b) print(ans) # 输出 [[5,5],[5,5]]
更健壮的通用写法
如果想让函数支持任意维度的同型矩阵相加,可以动态获取矩阵的行列数,避免固定range(2)的局限性:
def sum(m,n): # 获取行数和列数 rows = len(m) cols = len(m[0]) o = [[0 for _ in range(cols)] for _ in range(rows)] for i in range(rows): for j in range(cols): o[i][j] = m[i][j] + n[i][j] return o a = [[1,1],[2,2]] b = [[4,4],[3,3]] print(sum(a,b)) # 输出 [[5,5],[5,5]]
内容的提问来源于stack exchange,提问作者Siddhant
相关产品推荐
相关产品推荐

