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

Python turtle实现康威生命游戏触发Terminator报错求助

问题排查结论

turtle.Terminator是turtle库的内置终止异常,你遇到这个问题核心是三个原因:

  • 你一次性创建25*25共625个独立的Turtle方块实例,turtle默认每执行一次绘图/移动操作就立刻刷新屏幕,大量实例同时执行移动操作时会导致内部更新计数溢出,要是启动时不小心点到窗口、或者窗口没正常加载完成,就会直接抛出这个异常终止程序。
  • 如果之前运行代码时turtle窗口异常退出,后台残留了Python的turtle进程,也会导致下次启动时直接抛这个错,遇到这种情况打开任务管理器把残留的Python进程结束掉再运行即可。
  • 代码里还有两个隐藏小bug:
    • 用eval(f"({x},{y})")生成坐标元组完全没必要,eval会直接执行传入的字符串,写不好很容易触发安全问题或者语法错误,直接存(x,y)元组就行。
    • 内层循环结束后你把x重置成了0-300也就是-300,但初始x值是-500,这会导致从第二行开始所有格子整体右移200像素,画出来的网格是错位的。
修复方法
  1. 创建屏幕之后立刻关闭实时动画刷新,等所有方块都创建、移动到对应位置后再一次性刷新屏幕,既能避免刷新溢出导致的Terminator异常,还能大幅提升运行速度,保证程序持续运行不中断。
  2. 去掉多余的eval写法,修正坐标重置的数值错误。
  3. 后续做生命游戏迭代更新的时候,遵循「先算完所有细胞状态、改完所有格子颜色,再统一调用update刷新」的逻辑,就不会出现卡顿或者异常退出的问题。

修复后的可运行基础代码如下:

import turtle
import random

START_POSITION = []

def ReStart():
    global START_POSITION
    START_POSITION.clear()
    y = 500
    x = -500
    for i in range(25):
        for a in range(25):
            # 直接存储坐标元组,不需要用eval
            START_POSITION.append((x, y))
            x += 20
        # 重置x为初始值-500,修正网格错位问题
        x = -500
        y -= 20
    return True

ReStart()
screen = turtle.Screen()
# 关闭实时刷新,是解决异常、提升流畅度的核心配置
screen.tracer(0)

class Cell:
    def __init__(self):
        self.cells = []
        self.make_body()
        # 所有元素创建完成后统一刷新一次屏幕
        screen.update()
        # 你自己实现的a()、Alive()方法可以在这之后正常调用
        # self.a()
        # self.Alive(screen)
    
    def make_body(self):
        global START_POSITION
        for i in START_POSITION:
            seg = turtle.Turtle(shape="square")
            seg.color("White")
            seg.penup()
            seg.goto(i[0], i[1])
            self.cells.append(seg)

if __name__ == "__main__":
    cell = Cell()
    # 启动turtle主事件循环,保持窗口持续运行不自动关闭
    screen.mainloop()
额外小建议

你11岁就能自己参考资料写康威生命游戏已经非常厉害,后面写迭代逻辑的时候注意两个点:

  • 不要每改一个细胞的颜色就刷新屏幕,一定要等一整代所有细胞的状态都算完、颜色都改完,再调用一次screen.update(),哪怕几百个格子运行起来也会非常流畅。
  • 尽量不要用global传参,可以把START_POSITION作为参数传给Cell类,代码逻辑会更清晰,不容易出现变量被意外改乱的问题。

内容的提问来源于stack exchange,提问作者P6A08李倬霖

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:36:22