gpt4 book ai didi

python - 有效读取二维数组中另一个值周围的值?

转载 作者:行者123 更新时间:2023-12-01 04:03:17 25 4
gpt4 key购买 nike

我正忙着尝试用 Python 3.5 编写扫雷版本,我这里的代码旨在查看我创建为游戏板的二维数组中的每个值,并检查有多少个值它周围布满了地雷(用“O”表示)。它可以工作,但我觉得代码太笨重了。 python 中是否有一个函数可以做到这一点,或者我可以编写一个函数来简化它?

if 语句首先检查该值是否在数组中,以便不会发生超出范围的情况,然后检查该位置。

for x in range(len(array)):

for y in range(len(array[0])):

if array[x][y] != "O":

counter = 0

if (x - 1 >= 0) and (array[x-1][y] == "O"):

counter += 1

if (x + 1 < len(array)) and (array[x+1][y] == "O"):

counter += 1

if (y - 1 >= 0) and (array[x][y+1] == "O"):

counter += 1

if (y + 1 < len(array)) and (array[x][y+1] == "O"):

counter += 1

if (x - 1 >= 0) and (y - 1 >= 0) and (array[x-1][y-1] == "O"):

counter += 1

if (x - 1 >= 0) and (y + 1 < len(array)) and (array[x-1][y+1] == "O"):

counter += 1

if (x + 1 < len(array)) and (y - 1 >= 0) and (array[x+1][y-1] == "O"):

counter += 1

if (x + 1 < len(array)) and (y + 1 < len(array)) and (array[x+1][y+1] == "O"):

counter += 1

array[x][y] = counter

最佳答案

在 array[x][y] != 0 之后尝试这个函数

def checkNeighbours(x,y,matrix):
neighbourValues = [matrix[x_][y_] for x_ in range(x-1,x+2) for y_ in range(y-1,y+2)
if (0 <= x_ < len(matrix) and 0 <= y_ < len(matrix) and (x_ != x or y_ != y))]
return neighbourValues.count('O')

关于python - 有效读取二维数组中另一个值周围的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36124385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com