最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形)

 更新時間:2019年05月30日 14:32:58   作者:hwnzy  
這篇文章主要介紹了python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形) ,需要的朋友可以參考下

插圖工具使用Python內(nèi)置的turtle模塊,為什么叫這個turtle烏龜這個名字呢,可以這樣理解,創(chuàng)建一個烏龜,烏龜能前進、后退、左轉(zhuǎn)、右轉(zhuǎn),烏龜?shù)奈舶统?,它移動時就會畫一條線。并且為了增加烏龜畫圖的藝術(shù)價值,可以改變尾巴寬度和尾巴浸入墨水的顏色。

1.遞歸繪制螺旋

先用我們讓烏龜以line_len長度前進,然后向右旋轉(zhuǎn)90°,然后縮短line_len長度遞歸調(diào)用draw_spiral函數(shù)

import turtle
my_turtle = turtle.Turtle()
my_win = turtle.Screen()
def draw_spiral(tur, line_len):
  if line_len > 0:
    my_turtle.forward(line_len)
    my_turtle.right(90)
    draw_spiral(tur, line_len - 1)
draw_spiral(my_turtle, 100)
my_win.exitonclick()

2.遞歸繪制二叉樹

首先繪制branch_length長度的主干枝條,然后向右旋轉(zhuǎn)20°,遞歸調(diào)用draw_tree繪制主干枝條上的右分支,之后再向左旋轉(zhuǎn)40°(因為需要抵消右旋轉(zhuǎn)的20°),遞歸調(diào)用draw_tree繪制主干枝條的左分支,然后再向右旋轉(zhuǎn)20°,原路返回。

import turtle
my_tree = turtle.Turtle()
my_win = turtle.Screen()
def draw_tree(branch_length, t):
  if branch_length > 5:
    t.forward(branch_length)
    t.right(20)
    draw_tree(branch_length-20, t)
    t.left(40)
    draw_tree(branch_length-20, t)
    t.right(20)
    t.backward(branch_length)
my_tree.left(90)
my_tree.up() # 抬起尾巴
my_tree.backward(200)
my_tree.down() # 放下尾巴
my_tree.color('green')
draw_tree(100, my_tree)
my_win.exitonclick()

3.繪制謝爾賓斯基三角形

謝爾賓斯基三角形使用了三路遞歸算法,從一個大三角形開始,通過連接每一個邊的中點,將大三角型分為四個三角形,然后忽略中間的三角形,依次對其余三個三角形執(zhí)行上述操作。

import turtle
def draw_triangle(points, color, my_angle):
  my_angle.fillcolor(color)
  my_angle.up()
  my_angle.goto(points[0][0], points[0][1])
  my_angle.down()
  my_angle.begin_fill()
  my_angle.goto(points[1][0], points[1][1])
  my_angle.goto(points[2][0], points[2][1])
  my_angle.goto(points[0][0], points[0][1])
  my_angle.end_fill()
def get_mid(p1, p2):
  return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)
def sierpinski(points, degree, my_angle):
  colormap = ['blue', 'red', 'green', 'yellow',
        'violet', 'orange', 'white']
  draw_triangle(points, colormap[degree], my_angle)
  if degree > 0:
    sierpinski([points[0],
          get_mid(points[0], points[1]),
          get_mid(points[0], points[2])],
          degree - 1, my_angle)
    sierpinski([points[1],
          get_mid(points[0], points[1]),
          get_mid(points[1], points[2])],
          degree - 1, my_angle)
    sierpinski([points[2],
          get_mid(points[2], points[1]),
          get_mid(points[0], points[2])],
          degree - 1, my_angle)
my_turtle = turtle.Turtle()
my_win = turtle.Screen()
my_points = [[-100, -50], [0, 100], [100, -50]]
sierpinski(my_points, 3, my_turtle)
my_win.exitonclick()

總結(jié)

以上所述是小編給大家介紹的python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Python中容易被忽視的核心功能總結(jié)

    Python中容易被忽視的核心功能總結(jié)

    Python是一門富有魅力的編程語言,擁有豐富的功能和庫,以及強大的社區(qū)支持,然而,有一些核心功能經(jīng)常被忽視,而它們實際上可以極大地提高代碼的質(zhì)量、可讀性和性能,本文將給大家詳細(xì)的介紹一下這些容易被忽視的功能,需要的朋友可以參考下
    2023-11-11
  • Python3操作MongoDB增冊改查等方法詳解

    Python3操作MongoDB增冊改查等方法詳解

    這篇文章主要介紹了Python操作MongoDB增冊改查等方法詳解,需要的朋友可以參考下
    2020-02-02
  • Python使用Selenium實現(xiàn)瀏覽器打印預(yù)覽功能

    Python使用Selenium實現(xiàn)瀏覽器打印預(yù)覽功能

    在Web開發(fā)中,打印預(yù)覽是一個常見的功能需求,通過打印預(yù)覽,我們可以預(yù)覽和調(diào)整網(wǎng)頁的打印布局、樣式和內(nèi)容,Python的Selenium庫是一個強大的工具,可以自動化瀏覽器操作,包括打印預(yù)覽,本文將介紹如何使用Python Selenium庫來實現(xiàn)瀏覽器的打印預(yù)覽功能
    2023-11-11
  • Python pandas軸旋轉(zhuǎn)stack和unstack的使用說明

    Python pandas軸旋轉(zhuǎn)stack和unstack的使用說明

    這篇文章主要介紹了Python pandas軸旋轉(zhuǎn)stack和unstack的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python根據(jù)輸入?yún)?shù)計算結(jié)果的實例方法

    Python根據(jù)輸入?yún)?shù)計算結(jié)果的實例方法

    在本篇文章里小編個大家整理了一篇關(guān)于Python根據(jù)輸入?yún)?shù)計算結(jié)果的實例方法,有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2021-08-08
  • 關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題

    關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題

    這篇文章主要介紹了關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 使用python查找windows系統(tǒng)中所有程序的安裝信息

    使用python查找windows系統(tǒng)中所有程序的安裝信息

    這篇文章主要為大家介紹了使用python查找windows系統(tǒng)中所有程序的安裝信息示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • python OpenCV 實現(xiàn)高斯濾波詳解

    python OpenCV 實現(xiàn)高斯濾波詳解

    這篇文章主要介紹了Python+OpenCV 實現(xiàn)高斯濾波的過程,關(guān)于高斯濾波的解釋,它是一種線性平滑濾波,適用于消除高斯噪聲,具體實現(xiàn)過程跟隨小編一起看看吧
    2021-10-10
  • python處理csv數(shù)據(jù)動態(tài)顯示曲線實例代碼

    python處理csv數(shù)據(jù)動態(tài)顯示曲線實例代碼

    這篇文章主要介紹了python處理csv數(shù)據(jù)動態(tài)顯示曲線實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Django后端接收嵌套Json數(shù)據(jù)及解析詳解

    Django后端接收嵌套Json數(shù)據(jù)及解析詳解

    這篇文章主要介紹了Django后端接收嵌套Json數(shù)據(jù)及解析詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07

最新評論

循化| 醴陵市| 望奎县| 诏安县| 正镶白旗| 博白县| 南投县| 蓝田县| 康乐县| 巴林右旗| 香格里拉县| 延庆县| 东港市| 肇东市| 蚌埠市| 浦县| 安龙县| 凭祥市| 都兰县| 重庆市| 濉溪县| 通江县| 明溪县| 玛纳斯县| 楚雄市| 邵武市| 湖北省| 页游| 东乌| 梧州市| 夹江县| 会宁县| 迁西县| 江陵县| 金溪县| 文山县| 黄冈市| 莱州市| 高要市| 绥棱县| 绿春县|