我对编程完全不熟悉,我编写了这个函数函数来获取矩阵并将每个非零元素映射到其反向,并在python中将零映射到零。这是我的代码:
def question_1_c(arr):
new_arr = []
for i in range(len(arr)):
row_arr = []
for j in range(len(arr[i])):
row_arr.append(1/ arr[i][j])
new_arr.append(row_arr)
return new_arr
question_1_c([[70,0,13,67],[90,48,57,26],[43,45,67,89],[88,65,44,23]])
由于某种原因,它会出错。有人可以帮忙吗?
答案 0 :(得分:1)
我得到的错误除以零,这是有道理的,因为你永远不会检查零值。你也在进行整数除法 - 这不会达到预期的效果。
此外,在Python中,您可以迭代集合。我已经重写了你的代码,这个应该做你期望它做的事。
def question_1_c(arr):
new_arr = []
for row in arr:
row_arr = []
for val in row:
if val:
row_arr.append(1.0/val)
else:
row_arr.append(val)
new_arr.append(row_arr)
return new_arr
答案 1 :(得分:0)
数组的值为0,在[0,1]位置......所以在
中1 / arr [i] [j]程序: 1/0,并抛出异常。
你必须考虑这种情况做这样的事情:
if arr[i][j]==0:
...
else:
row_arr.append(1/ arr[i][j])