我写的代码有问题,得到每个非零元素的矩阵的逆矩阵,0到0

时间:2013-10-30 16:48:26

标签: python

我对编程完全不熟悉,我编写了这个函数函数来获取矩阵并将每个非零元素映射到其反向,并在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]])

由于某种原因,它会出错。有人可以帮忙吗?

2 个答案:

答案 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])