亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

小怪獸愛吃肉 2022-10-06 19:31:04
我正在使用 repl.it py 龜遞歸繪制一棵樹。這是我的代碼import turtleimport randomdef about(x): return x * random.uniform(0.95,1.05)# recursively draw a treedef 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()也在這里。但它只繪制了樹的一部分。如果我將其更改為t.tracer(150)那么它的工作原理!也tracer(10)有效,但tracer(200)不起作用。示蹤劑的高度有限制嗎?
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

首先,讓我們討論一下您的繪圖代碼。你的樹由 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)在您完成繪圖時設置。然后一切都應該正常工作。


查看完整回答
反對 回復 2022-10-06
  • 1 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號