<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python筆下那些神奇的樹

          共 1713字,需瀏覽 4分鐘

           ·

          2020-08-10 23:28


          點(diǎn)擊上方"藍(lán)字"關(guān)注我們






          Python大數(shù)據(jù)分析


          記錄? ?分享? ?成長(zhǎng)

          代碼來自網(wǎng)絡(luò)

          turtle是一只神奇的小海龜,可以畫出大千世界。而turtle加入了python大家族,像是如龜?shù)盟?,變得更加受歡迎。

          古人有詩(shī)云“庭中有奇樹,綠葉發(fā)華滋”,樹之美,或婀娜、或繁茂、或蒼勁、或青翠。python-turtle筆下的樹更是別有一番風(fēng)味。

          小園新種紅櫻樹,閑繞花行便當(dāng)游

          #?coding=gbk
          import?turtle?as?T
          import?random
          import?time

          #?畫櫻花的軀干(60,t)
          def?Tree(branch,?t):
          ????time.sleep(0.0005)
          ????if?branch?>?3:
          ????????if?8?<=?branch?<=?12:
          ????????????if?random.randint(0,?2)?==?0:
          ????????????????t.color('snow')??#?白
          ????????????else:
          ????????????????t.color('lightcoral')??#?淡珊瑚色
          ????????????t.pensize(branch?/?3)
          ????????elif?branch?8:
          ????????????if?random.randint(0,?1)?==?0:
          ????????????????t.color('snow')
          ????????????else:
          ????????????????t.color('lightcoral')??#?淡珊瑚色
          ????????????t.pensize(branch?/?2)
          ????????else:
          ????????????t.color('sienna')??#?赭(zhě)色
          ????????????t.pensize(branch?/?10)??#?6
          ????????t.forward(branch)
          ????????a?=?1.5?*?random.random()
          ????????t.right(20?*?a)
          ????????b?=?1.5?*?random.random()
          ????????Tree(branch?-?10?*?b,?t)
          ????????t.left(40?*?a)
          ????????Tree(branch?-?10?*?b,?t)
          ????????t.right(20?*?a)
          ????????t.up()
          ????????t.backward(branch)
          ????????t.down()

          #?掉落的花瓣
          def?Petal(m,?t):
          ????for?i?in?range(m):
          ????????a?=?200?-?400?*?random.random()
          ????????b?=?10?-?20?*?random.random()
          ????????t.up()
          ????????t.forward(b)
          ????????t.left(90)
          ????????t.forward(a)
          ????????t.down()
          ????????t.color('lightcoral')??#?淡珊瑚色
          ????????t.circle(1)
          ????????t.up()
          ????????t.backward(a)
          ????????t.right(90)
          ????????t.backward(b)

          #?繪圖區(qū)域
          t?=?T.Turtle()
          #?畫布大小
          w?=?T.Screen()
          #?隱藏畫筆
          t.hideturtle()??
          t.getscreen().tracer(5,?0)
          #?wheat小麥
          w.screensize(bg='white')??
          t.left(90)
          t.up()
          t.backward(150)
          t.down()
          t.color('sienna')
          #?畫櫻花的軀干
          Tree(60,?t)
          #?掉落的花瓣
          Petal(200,?t)
          w.exitonclick()

          江南有丹橘,經(jīng)冬猶綠林

          #?coding=gbk
          from?turtle?import?*
          from?random?import?*
          from?math?import?*


          class?Tree:

          ????def?__init__(self):
          ????????setup(1000,?500)
          ????????bgcolor(1,?1,?1)??#?背景色
          ????????#?ht()??#?隱藏turtle
          ????????speed(10)??#?速度?1-10漸進(jìn),0?最快
          ????????#?tracer(1,?100)????#?設(shè)置繪圖屏幕刷新頻率,參數(shù)1設(shè)置在正常刷新頻次的第參數(shù)1次刷新,參數(shù)2設(shè)置每次刷新的時(shí)延
          ????????tracer(0,?0)
          ????????pu()??#?抬筆
          ????????backward(100)
          ????????#?保證筆觸箭頭方向始終不向下,此處使其左轉(zhuǎn)90度,而不是右轉(zhuǎn)
          ????????left(90)??#?左轉(zhuǎn)90度
          ????????backward(300)??#?后退300

          ????def?tree(self,?n,?l):
          ????????pd()??#?下筆
          ????????#?陰影效果
          ????????t?=?cos(radians(heading()?+?45))?/?8?+?0.25
          ????????pencolor(t,?t,?t)
          ????????pensize(n?/?1.2)
          ????????forward(l)??#?畫樹枝

          ????????if?n?>?0:
          ????????????b?=?random()?*?15?+?10??#?右分支偏轉(zhuǎn)角度
          ????????????c?=?random()?*?15?+?10??#?左分支偏轉(zhuǎn)角度
          ????????????d?=?l?*?(random()?*?0.25?+?0.7)??#?下一個(gè)分支的長(zhǎng)度
          ????????????#?右轉(zhuǎn)一定角度,畫右分支
          ????????????right(b)
          ????????????self.tree(n?-?1,?d)
          ????????????#?左轉(zhuǎn)一定角度,畫左分支
          ????????????left(b?+?c)
          ????????????self.tree(n?-?1,?d)
          ????????????#?轉(zhuǎn)回來
          ????????????right(c)
          ????????else:
          ????????????#?畫葉子
          ????????????right(90)
          ????????????n?=?cos(radians(heading()?-?45))?/?4?+?0.5
          ????????????pencolor(n,?n?*?0.8,?n?*?0.8)
          ????????????fillcolor(n,?n?*?0.8,?n?*?0.8)
          ????????????begin_fill()
          ????????????circle(3)
          ????????????left(90)
          ????????????end_fill()

          ????????????#?添加0.3倍的飄落葉子
          ????????????if?random()?>?0.7:
          ????????????????pu()
          ????????????????#?飄落
          ????????????????t?=?heading()
          ????????????????an?=?-40?+?random()?*?40
          ????????????????setheading(an)
          ????????????????dis?=?int(800?*?random()?*?0.5?+?400?*?random()?*?0.3?+?200?*?random()?*?0.2)
          ????????????????forward(dis)
          ????????????????setheading(t)
          ????????????????#?畫葉子
          ????????????????pd()
          ????????????????right(90)
          ????????????????n?=?cos(radians(heading()?-?45))?/?4?+?0.5
          ????????????????pencolor(n?*?0.5?+?0.5,?0.4?+?n?*?0.4,?0.4?+?n?*?0.4)
          ????????????????fillcolor(n,?n?*?0.8,?n?*?0.8)
          ????????????????begin_fill()
          ????????????????circle(2)
          ????????????????left(90)
          ????????????????end_fill()
          ????????????????pu()
          ????????????????#?返回
          ????????????????t?=?heading()
          ????????????????setheading(an)
          ????????????????backward(dis)
          ????????????????setheading(t)
          ????????????#?pass
          ????????pu()
          ????????backward(l)??#?退回

          def?main():
          ????tree?=?Tree()
          ????tree.tree(12,?100)??#?遞歸7層
          ????done()


          if?__name__?==?'__main__':
          ????main()

          落紅不是無(wú)情物,化作春泥更護(hù)花

          #?coding=gbk
          from?turtle?import?*
          from?random?import?*

          #?畫樹方法
          def?drawTree(n,?l):
          ????pendown()
          ????pencolor('#5d3c3c')
          ????pensize(?n?/?1.5)
          ????forward(l)
          ????if?n?>?0:
          ????????dr?=?randint(30,?40)
          ????????dl?=??randint(30,?40)
          ????????move?=?l?*?(random()?*?0.4?+?0.5)
          ????????right(dr)
          ????????drawTree(n?-?1,?move)
          ????????left(dr?+?dl)
          ????????drawTree(n?-?1,?move)
          ????????right(dl)
          ????else:
          ????????drawPetal(3)
          ????penup()
          ????backward(l)

          #?花瓣位置生成
          def?petalPlace(m,?x,?y):
          ????penup()
          ????goto(x,?y)
          ????pendown()
          ????setheading(0)
          ????tracer(False)
          ????for?i?in?range(m):
          ????????if?i?==?0:
          ????????????drawPetal(5)
          ????????else:
          ????????????penup()
          ????????????goto(x,?y)
          ????????????a?=?randint(20,?400)
          ????????????b?=?randint(-50,?50)
          ????????????forward(a)
          ????????????left(90)
          ????????????forward(b)
          ????????????right(90)
          ????????????pendown()
          ????????????drawPetal(5)

          #?花朵繪畫方法
          def?drawPetal(n):
          ????colormode(255)
          ????r?=?randint(200,?255)
          ????g?=?randint(8,?158)
          ????b?=?randint(8,?158)
          ????begin_fill()
          ????fillcolor(r,?g,?b)
          ????pencolor(r,?g,?b)
          ????circle(n)
          ????end_fill()

          #?啟動(dòng)方法
          def?run():
          ????setup(1.0,?1.0)
          ????penup()
          ????goto(-50,?-150)
          ????left(90)
          ????pendown()
          ????hideturtle()
          ????tracer(False)
          ????drawTree(13,?150)
          ????petalPlace(160,?-100,?-150)

          run()
          done()

          川原秋色靜,蘆葦晚風(fēng)鳴

          import?turtle
          import?random

          stack?=?[]

          def?createWord(max_it,?word,?proc_rules,?x,?y,?turn):
          ????turtle.up()
          ????turtle.home()
          ????turtle.goto(x,?y)
          ????turtle.right(turn)
          ????turtle.down()
          ????t?=?0
          ????while?t?????????word?=?rewrite(word,?proc_rules)
          ????????drawit(word,?5,?20)
          ????????t?=?t+1

          def?rewrite(word,?proc_rules):
          ????wordList?=?list(word)
          ????for?i?in?range(len(wordList)):
          ????????curChar?=?wordList[i]
          ????????if?curChar?in?proc_rules:
          ????????????wordList[i]?=?proc_rules[curChar]
          ????return?"".join(wordList)

          def?drawit(newWord,?d,?angle):
          ????newWordLs?=?list(newWord)
          ????for?i?in?range(len(newWordLs)):
          ????????cur_Char?=?newWordLs[i]
          ????????if?cur_Char?==?'F':
          ????????????turtle.forward(d)
          ????????elif?cur_Char?==?'+':
          ????????????turtle.right(angle)
          ????????elif?cur_Char?==?'-':
          ????????????turtle.left(angle)
          ????????elif?cur_Char?==?'[':
          ????????????state_push()
          ????????elif?cur_Char?==?']':
          ????????????state_pop()

          def?state_push():
          ????global?stack
          ????stack.append((turtle.position(),?turtle.heading()))

          def?state_pop():
          ????global?stack
          ????position,?heading?=?stack.pop()
          ????turtle.up()
          ????turtle.goto(position)
          ????turtle.setheading(heading)
          ????turtle.down()

          def?randomStart():
          ????x?=?random.randint(-300,?300)
          ????y?=?random.randint(-320,?-280)
          ????heading?=?random.randint(-100,?-80)
          ????return?((x,?y),?heading)

          def?main():
          ????rule_sets?=?[]
          ????rule_sets.append(((3,?5),?'F',?{'F':'F[+F][-F]F'}))
          ????rule_sets.append(((4,?6),?'B',?{'B':'F[-B][+?B]',?'F':'FF'}))
          ????rule_sets.append(((2,?4),?'F',?{'F':'FF+[+F-F-F]-[-F+F+F]'}))
          ????tree_count?=?50
          ????turtle.tracer(10,?0)
          ????for?x?in?range(tree_count):
          ????????rand_i?=?random.randint(0,?len(rule_sets)?-?1)
          ????????selected_ruleset?=?rule_sets[rand_i]
          ????????i_range,?word,?rule?=?selected_ruleset
          ????????low,?high?=?i_range
          ????????i?=?random.randint(low,?high)
          ????????start_position,?start_heading?=?randomStart()
          ????????start_x,?start_y?=?start_position
          ????????createWord(i,?word,?rule,?start_x,?start_y,?start_heading)

          if?__name__?==?'__main__':?main()

          上面代碼都可以直接執(zhí)行,試試吧!

          公眾號(hào)后臺(tái)回復(fù):樹,可領(lǐng)取全部代碼


          加入我們的知識(shí)星球【Python大數(shù)據(jù)分析】

          愛上數(shù)據(jù)分析!







          往期精選


          1

          jupyter lab最強(qiáng)代碼提示插件來了

          2

          Github 30000 Star的免費(fèi)BI工具:Superset

          3

          Python+Kepler.gl輕松制作時(shí)間輪播地圖




          Python大數(shù)據(jù)分析

          data creates?value

          掃碼關(guān)注我們

          ? ? ? ? ? ? ? ? ? ? ? ? ? ?


          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲乱伦黄色小说视频网址 | 欧美精品久久久久久久久大尺度 | 久久久久亚洲 | 天天干一干 | 亚洲欧美性生活 |