问题描述
我只有一个(很可能是)最后一个问题。从我发送上一个问题开始,我已经取得了一些进步,到目前为止,我已经对5/6函数进行了编码(1、2、3、5和6),而函数4实际上只是将函数5和6放在一起。是我需要帮助的。这些是我用来创建Conway的人生游戏的功能:
功能1:创建空白网格 输入:无 返回:空白网格
功能4:将网格提前一代 输入:一个网格 返回:新一代的新网格
功能5:将细胞提前一代 输入:行,列,网格 返回:单元是否存活(真或假)
功能6:确定一个小区的存活邻居数 输入:行,列,网格 return:单元中在世邻居的数量
到目前为止,这是我的代码:
living_cell = "O"
dead_cell = "-"
# There was more code here before. I removed it for the sake of brevity
def num_living_neighbors(row,col,grid):
living_neighbors_count = 0
if grid[row][col + 1] == living_cell:
living_neighbors_count += 1
if grid[row][col - 1] == living_cell:
living_neighbors_count += 1
if grid[row + 1][col] == living_cell:
living_neighbors_count += 1
if grid[row - 1][col] == living_cell:
living_neighbors_count += 1
if grid[row + 1][col + 1] == living_cell:
living_neighbors_count += 1
if grid[row + 1][col - 1] == living_cell:
living_neighbors_count += 1
if grid[row - 1][col + 1] == living_cell:
living_neighbors_count += 1
if grid[row - 1][col - 1] == living_cell:
living_neighbors_count += 1
return living_neighbors_count
def adv_cell_one_gen(row,grid):
# is alive,less than 2 alive neighbors
if grid[row][col] == living_cell and num_living_neighbors(row,grid) < 2:
return False
# is alive,2 or 3 alive neighbors
if grid[row][col] == living_cell and (
num_living_neighbors(row,grid) == 2 or num_living_neighbors(row,grid) == 3):
return True
# is alive,more than 4 alive neighbors
if grid[row][col] == living_cell and num_living_neighbors(row,grid) > 4:
return False
# is dead,has 3 alive neighbors
if grid[row][col] == dead_cell and num_living_neighbors(row,grid) == 3:
return True
def adv_grid_one_gen(grid):
for i in grid:
for j in i:
if adv_cell_one_gen(j,i,grid) == True:
grid[i][j] = living_cell
else:
grid[i][j] = dead_cell
return grid
adv_grid_one_gen(create_blank_grid)
功能1:create_blank_grid
功能2:print_grid
功能3:load_design
功能4:adv_grid_one_gen
功能5:adv_cell_one_gen
功能6:num_living_neighbors
我在使用功能4时遇到困难,通过使用功能5在整个网格中进行迭代,使整个网格前进了一代。
我的问题是,当我尝试运行此命令时,出现此错误:
这是我的问题,希望您能提供帮助。再次感谢您的帮助。谢谢!
解决方法
在adv_grid_one_gen
中,您可能想要更改
for i in grid:
for j in i:
到
for i in range(len(grid)):
for j in range(len(grid[i])):
您希望i
和j
是整数,而不是字符串/字符串列表,对吗?