用Python构建网格并填充每个单元格
希望有人能帮我一下,我刚开始学习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