Turtle模块运行报RecursionError:调用Python对象时超出最大递归深度如何解决
错误原因
- 核心触发递归错误的原因是
random_color函数逻辑错误:函数生成完rgb颜色元组后,没有返回生成好的颜色,反而递归调用了自身,且没有设置任何终止递归的条件。程序会无限循环调用该函数,直到超出Python默认的递归深度限制,最终抛出RecursionError。 - 代码还存在额外的前置错误:你没有导入
turtle模块并命名为t,直接使用t.colormode、t.Turtle、t.Screen会先抛出变量t未定义的NameError。
修复方案
- 修改
random_color函数的返回语句,将return random_color()改为返回已经生成好的颜色元组color。 - 调整模块导入逻辑,补全
turtle的别名导入即可。
修复后完整代码
import turtle as t from random import randint, choice t.colormode(255) tim = t.Turtle() def random_color(): r = randint(1, 255) g = randint(1, 255) b = randint(1, 255) color = (r, g, b) # 修正返回值,不再递归调用自身 return color directions = [0, 90, 180, 270] tim.pensize(15) tim.speed("fast") for _ in range(200): tim.color(random_color()) tim.forward(30) tim.setheading(choice(directions)) screen = t.Screen() screen.exitonclick()
内容的提问来源于stack exchange,提问作者Tien Huynh
相关产品推荐
相关产品推荐

