2

私は 0 と 1 を含む 7*7 行列を持っており、各 (x,y) が 1 である隣人の数をチェックします。私は Python の初心者であり、基本的なプログラミング手順のみを使用します。

私は持っている:

for x in range(rows):
        for y in range(cols):
            lives = 0
            lives = neighbors(matrix, rows, cols)

def neighbors(matrix, rows, cols):

            if matrix[x][y+1] == 1:
                lives += 1
            if matrix[x-1][y+1] == 1:
                lives += 1
            #All 8 positions are checked like this
    return lives

ol インデックス エラーが発生します。これは非常に単純な問題のように思えますが、修正方法がわかりません。

4

1 に答える 1

1

まず、y+1を実行するとインデックスエラーが発生します。colsの量の範囲内にあるため、これはcols + 1になり、範囲外になります。できることは、try-exceptブロックを使用するか、cols-1にループするだけで範囲外にならないようにすることです。

さらに、すべての入力パラメーターを使用するわけではなく、グローバルスコープのx変数とy変数にアクセスするため、関数定義は冗長です。最も簡単な方法は、おそらく定義とreturnステートメントを削除することです。

これは機能するはずです:

for x in range(rows):
    for y in range(cols-1): #Loop until the second to last element.
        lives = 0
        if matrix[x][y+1] == 1:
            lives += 1
        if x == 0:  #You probably don't want to check x-1 = -1
            continue 
        if matrix[x-1][y+1] == 1:
            lives += 1
于 2012-11-29T12:04:27.740 に答える