我有一个包含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索引错误。这似乎是一个非常简单的问题,我似乎无法弄清楚如何解决它。
答案 0 :(得分: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