You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现康威生命游戏(Conway's Game of Life)运行异常求助

问题排查及修复方案

1. 全局grid初始化逻辑错误

你写的grid = [[False] * 32] * 18属于Python浅拷贝,创建的18行列表全部指向同一个内存地址,修改任意一行的元素会同步修改所有行的对应位置。并且你后续的逻辑里根本没有读取grid的状态,这部分代码完全是冗余的。

2. Cell.update()方法中的grid操作完全错误

你在update方法里写的修改grid的几行代码:

grid_temp = grid[self.indexY]
grid_temp.pop(self.indexY)
grid_temp.insert(self.indexY, self.alive)
grid.pop(self.indexY)
grid.insert(self.indexX, grid_temp)

这部分逻辑存在严重问题:

  • 你修改grid的操作没有任何实际作用,因为你计算相邻细胞存活数的时候,是直接遍历cells列表判断坐标和alive属性,根本没用到grid的值
  • 操作行列索引完全混乱:弹出indexY行之后插入到indexX的位置,直接打乱了grid的行顺序,就算你后续要用到grid也会读到完全错误的值

修复方案:直接删除update方法里所有操作grid的代码即可

3. 状态更新队列没有清空

你在主循环里用live_queue和die_queue存储待更新的细胞,但是每次循环结束后没有清空队列,导致后续每一轮循环都会重复处理之前所有轮次的细胞,状态更新完全混乱。

修复方案:在每一轮遍历细胞计算更新状态之前,先清空两个队列:

live_queue.clear()
die_queue.clear()
for item in cells:
    if item.update():
        live_queue.append(item)
    else:
        die_queue.append(item)

可选优化项

你现在每次统计相邻细胞都要遍历整个cells列表,时间复杂度很高,后续画布扩大后会明显卡顿。可以直接通过indexX和indexY计算相邻坐标,直接从cells里取对应细胞判断,性能会提升很多。

修复以上核心问题后,你硬编码的滑翔机就可以正常迭代移动了。

内容的提问来源于stack exchange,提问作者Atomic Peanut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:24:04