python - 有没有办法随机化网格中的每个单元格?
问题描述
我一直在尝试康威生命游戏问题,因为它是学校的延伸,但我不知道如何随机化网格中的每个单元格(活着的,死的,用 L 和 D 代表它们)。一些变量仅供以后使用(开始时的变量) 到目前为止我的代码如下:
import random
import math
generations = 0
liveCellCount = 0
deadCellCount = 0
cellState = "LD"
width = 20
height = 20
grid = []
row = []
state = random.choice(cellState)
p = 1
for i in range(width):
row.append(state)
for i in range(height):
grid.append(row)
while p < 2:
for i in range(len(grid)):
print(grid[i])
p = p + 1
也忽略我的 p = 1 东西,我懒得改变它
解决方案
我看到您正在尝试随机化网格中每个单元格的状态。我发现您的代码存在以下问题。
state = random.choice(cellState)
for i in range(width):
row.append(state)
您已经选择了一次随机状态,并且您正在为网格中的每个单元格重复使用该状态。考虑将随机选择函数放入 for 循环中,以便为每个单元格选择一个新函数。
for i in range(height):
grid.append(row)
您还对网格中的每一行使用相同的列表。
这是我建议的解决方案:
import random
width = 20
height = 20
grid = []
for i in range(height):
row = []
for j in range(width):
state = random.choice("LD")
row.append(state)
grid.append(row)
# Print the grid below
请注意,为网格中的每一行创建了一个新列表。这是为了确保每一行都可以不同,这与您为整个网格重用相同行对象的示例不同。
推荐阅读
- android - 我在 android studio 中运行我的代码时出现错误
- apache-kafka - 用于 Spring Cloud 的 Kafka 绑定器不使用事务回滚
- html - 为什么我的图像超链接似乎破坏了图像?
- javascript - 如何模拟酶组件中的组件
- c# - Visual Studio 在 RDLC 报告中错误地显示条码字体
- libreoffice-writer - 标尺栏中的这个符号是什么?
- python - 找不到标签或无法拉取内容时如何重新加载页面?
- python - 根据计算向数据框添加多列的函数 - Pandas
- python - 使用 input() 作为默认参数的函数——收集输入但不打印输出
- reactjs - 来自数据获取的 TypeScript 接口对象