我有一个网格作为元组的元组,其中包含整数(1/0),单元格的行号和列号作为整数。我必须找出有多少个相邻单元格的邻居为整数。
这是来自 www.checkio.org 的任务,这是一个有趣的 Python 学习网站。
这是我的代码:
def count_neighbours(grid, row, col):
grid = ()
count = 0
for pos in ((row - 1, col), (row + 1, col), (row, col - 1), (row, col + 1), (row - 1, col - 1), (row - 1, col + 1), (row + 1, col - 1), (row + 1, col + 1)):
if pos == 1:
count += 1
return count
系统回答我所选小区附近没有邻居。请解释一下哪里出了问题,感谢您的关注!
最佳答案
我发现两个明显的错误:
您用空元组替换了
网格
您的代码根本不引用
grid
变量,如果pos
等于,您只需将 1 添加到count
1.pos
永远不会等于 1,因为您将其设置为一系列元组中的一个。
因此,只要 row
和 col
是数字(并且引发否则异常(exception))。
您需要实际引用传入的网格:
def count_neighbours(grid, row, col):
count = 0
for pos in (
(row - 1, col), (row + 1, col), (row, col - 1),
(row, col + 1), (row - 1, col - 1), (row - 1, col + 1),
(row + 1, col - 1), (row + 1, col + 1)):
if grid[pos[0]][pos[y]] == 1:
count += 1
return count
我在这里假设网格是表示行和单元格的列表的列表。
接下来,您必须处理超出范围的仓位;第一行顶部没有邻居,例如:
def count_neighbours(grid, row, col):
count = 0
for x, y in (
(row - 1, col), (row + 1, col), (row, col - 1),
(row, col + 1), (row - 1, col - 1), (row - 1, col + 1),
(row + 1, col - 1), (row + 1, col + 1)):
if not (0 <= x < len(grid) and 0 <= y < len(grid[x])):
# out of bounds
continue
if grid[x][y] == 1:
count += 1
return count
关于python - python 中的摩尔社区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830697/