如何随机调用存储的turtle-graphics函数生成随机路径
问题根因
- 你定义
moves、turns列表时直接写了pen.forward(30)这类带参数的方法调用,代码执行到列表定义行时就会立即执行这四个turtle操作,将方法返回的None值存入列表,后续循环中random.choice只是取出了无意义的None,不会执行任何路径生成逻辑。
修复方案
把列表中存储的内容改为可调用的函数对象,循环取出后再执行调用即可,修改后的完整代码如下:
from turtle import Turtle from turtle import Screen import random pen = Turtle() pen.pensize(8) pen.speed(10) window = Screen() window.colormode(255) # 用lambda包装方法调用,存储可调用对象而非执行结果 moves = [lambda: pen.forward(30), lambda: pen.backward(30)] turns = [lambda: pen.right(90), lambda: pen.left(90)] is_true = True while is_true: pen.color(random.randint(0,255),random.randint(0,255),random.randint(0,255)) # 取出可调用对象后加()执行 random.choice(turns)() random.choice(moves)() window.exitonclick()
如果不想用lambda语法,也可以导入functools.partial实现相同效果:
from functools import partial moves = [partial(pen.forward, 30), partial(pen.backward, 30)] turns = [partial(pen.right, 90), partial(pen.left, 90)]
内容的提问来源于stack exchange,提问作者addy yt
相关产品推荐
相关产品推荐

