0

私はプログラミングにまったく慣れていません。この関数関数を作成して、行列を取得し、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]])

何らかの理由でエラーが発生します。誰でも助けることができますか?

4

2 に答える 2

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
于 2013-10-30T17:06:50.773 に答える
0

配列は[0,1]の位置に0の値を持っています...だから

1/ arr[i][j] プログラム do: 1/0 で、例外がスローされます。

この場合、次のようにする必要があります。

if arr[i][j]==0:
    ...
else:
    row_arr.append(1/ arr[i][j])
于 2013-10-30T17:12:29.983 に答える