为什么Repl.it python-turtle.tracer(n)限制为150?

2024-05-20 04:08:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用repl.it.py对一棵树进行递归绘制。这是我的密码

import turtle
import random
def about(x): return x * random.uniform(0.95,1.05)

# recursively draw a tree
def tree(t,a,s):
    if s<2: return
    t.left(a)
    t.fd(s)
    tree(t.clone(),about(30), s * about(.7))
    tree(t,about(-30), s * about(.7))

t = turtle.getpen()
t.ht(); t.speed(0); t.tracer(0)
tree(t,90,40)
t.update()

Also here。但它只画了树的一部分。如果我把它改成

t.tracer(150)

那就行了!同样tracer(10)可以工作,但是tracer(200)不工作。示踪剂能达到的高度有限制吗


Tags: pyimporttree密码returndef绘制it
1条回答
网友
1楼 · 发布于 2024-05-20 04:08:44

首先,让我们讨论一下您的绘图代码。你的树由500只不同的海龟画的大约500条线组成!这似乎太过分了,所以让我们重写代码,使用一只海龟来撤销它的移动,而不是克隆它自己:

from turtle import Screen, Turtle
from random import uniform

def about(x):
    return x * uniform(0.95, 1.05)

# recursively draw a tree
def tree(t, a, s):
    if s < 2:
        return

    t.forward(s)
    t.left(a)
    tree(t, about(30), s * about(0.7))
    t.right(2 * a)
    tree(t, about(-30), s * about(0.7))
    t.left(a)
    t.backward(s)

screen = Screen()
screen.tracer(0)

turtle = Turtle()
turtle.hideturtle()
turtle.setheading(90)

tree(turtle, 15, 50)

screen.tracer(1)
screen.mainloop()

tracer()而言,我无法重现您的结果,但图像也从未完成。tracer()的参数指定您只希望在每次nth图形操作中更新图像。这是非常专门的,我只推荐0和1的值。首先,很难根据算法计算出每N次更新应该是什么,以及对用户来说什么在视觉上是有意义的。其次,在标准Python turtle中,有些操作会导致更新,而不管tracer()设置是否会引发此计算,除非您知道这些额外的更新何时发生

在您的情况下,为了提高速度,请在密集绘图开始时设置tracer(0),在完成绘图时设置tracer(1)。那么一切都会好起来的

相关问题 更多 >