康威的人生游戏下一代功能Python

问题描述

我只有一个(很可能是)最后一个问题。从我发送上一个问题开始,我已经取得了一些进步,到目前为止,我已经对5/6函数进行了编码(1、2、3、5和6),而函数4实际上只是将函数5和6放在一起。是我需要帮助的。这些是我用来创建Conway的人生游戏的功能

功能1:创建空白网格 输入:无 返回:空白网格

功能2:打印给定的网格 输入:一个网格 返回:无

功能3:加载图案 输入:文件名,网格 返回:无

功能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在整个网格中进行迭代,使整个网格前进了一代。

我的问题是,当我尝试运行此命令时,出现此错误

enter image description here

这是我的问题,希望您能提供帮助。再次感谢您的帮助。谢谢!

解决方法

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])):

您希望ij是整数,而不是字符串/字符串列表,对吗?