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

Python 我写的代码有问题,为了得到每个非零元素和0到0的矩阵的逆,python,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.ap

我对编程完全陌生,我编写了这个函数来获取一个矩阵,并在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]])

由于某种原因,它给出了一个错误。有人能帮忙吗?

我得到的错误是被零除,这很有意义,因为你从来没有检查过零值。你也在做整数除法——这不会达到你期望的效果

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
此外,在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

数组在[0,1]位置有一个0值。。。所以在

1/arr[i][j]该计划应: 1/0,并引发异常

你必须考虑这个案子这样做:

if arr[i][j]==0:
    ...
else:
    row_arr.append(1/ arr[i][j])

您是否正在代码中处理0案例?你在哪里得到了什么错误?它给了你什么错误?请发布完整的回溯。