用Python构建网格并填充每个单元格

0 投票
1 回答
4045 浏览
提问于 2025-04-18 04:53

希望有人能帮我一下,我刚开始学习Python,想知道我下面的做法是不是正确。

我定义了一个叫做Cell的对象类...

class Cell(object):
    def __init__(self, name):
        self.name=name
        self.location=(col, row)
        self.value=string

我想要创建一个由这些Cell组成的网格,我想逐个处理网格中的每个Cell,并给每个Cell的self.value赋一个1到18之间的随机值。我打算用(col, row)来表示网格的X和Y轴,这样每个Cell就有一个(col, row)的列表。

所以,一个网格应该由填充好的Cell组成,我这样定义构建网格的过程对吗?(我知道“询问用户大小”是不对的,只是写上来说明“大小”是从哪里来的)

class Grid(object):
    def __init__(self, name, col, row, value):
        #ask user for size
        for row in range(size):
            for col in range(size):
                Cell(value) = random.randint(1,18)

1 个回答

0

我觉得有几种方法可以设置这个,但具体要看你对输出的要求。你需要修改单元格、移动它们,还是给每个单元格添加内容等等,这些都是你在开始设计之前需要考虑的问题。

这里有一个例子,每个单元格都有一个独特的名字,这个名字是由它的列号和网格号组合而成的。也许,如果每个单元格需要一个随机的属性作为value,你可以在每个单元格的构造函数里分配这个属性,然后在Grid类中再创建一个列表,把这些值放进去?这真的取决于你的需求,以及你选择如何访问这些属性。

class Cell(object):
    def __init__(self, name):
        self.name = name

class Grid(object):
    def __init__(self, col_amount, row_amount):

        self.cell_list = [] # empty list to hold all cells

        for col in range(col_amount):
            for row in range(row_amount):
                # create each cell as instance of Cell,
                # with the concatenated col and row numbers
                # as the name, then add the cell.name to cell_list
                cell = Cell(str(col) + '_' + str(row))
                self.cell_list.append(cell.name)


grid = Grid(10,10) # make an instance of Grid with size 10x10
print grid.cell_list

撰写回答