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

Python使用turtle庫繪制科赫雪花詳細(xì)代碼

 更新時(shí)間:2024年05月23日 10:43:07   作者:南宮幻雅  
科赫曲線是一種分形,其形態(tài)非常像雪花,因此又被稱作科赫雪花、雪花曲線,這篇文章主要給大家介紹了關(guān)于Python使用turtle庫繪制科赫雪花的相關(guān)資料,需要的朋友可以參考下

實(shí)驗(yàn)題目:

turtle庫的使用

實(shí)驗(yàn)?zāi)康模?/h2>

掌握Python語言程序的基本結(jié)構(gòu)

掌握turtle庫的使用方法

編寫python程序,實(shí)現(xiàn)以下功能:

3.1把繪制科赫雪花的代碼封裝為函數(shù),繪制3朵以上的雪花,雪花出現(xiàn)的位置并不固定,并填充不同的顏色

# 導(dǎo)入turtle模塊
import turtle
# 定義繪制科赫雪花的函數(shù)
def koch_snowflake(size, level):
    # 如果繪制的級(jí)數(shù)為0,直接向前走
    if level == 0:
        turtle.forward(size)
    else:
        # 否則,按照科赫曲線的規(guī)則,分四段繪制
        koch_snowflake(size / 3, level - 1) # 第一段
        turtle.left(60) # 左轉(zhuǎn)60度
        koch_snowflake(size / 3, level - 1) # 第二段
        turtle.right(120) # 右轉(zhuǎn)120度
        koch_snowflake(size / 3, level - 1) # 第三段
        turtle.left(60) # 左轉(zhuǎn)60度
        koch_snowflake(size / 3, level - 1) # 第四段

# 設(shè)置畫筆速度和顏色
turtle.speed(10)
turtle.pencolor("black")
# 隱藏海龜
turtle.hideturtle()
# 提起畫筆,移動(dòng)到左下角
turtle.penup()
turtle.goto(-200, -100)
# 放下畫筆,開始繪制
turtle.pendown()
# 繪制第一朵雪花,填充紫色
turtle.fillcolor("purple")
turtle.begin_fill()
for i in range(3): # 三次循環(huán),繪制三條邊
    koch_snowflake(200, 3) # 調(diào)用函數(shù),繪制邊長為200,級(jí)數(shù)為3的科赫曲線
    turtle.right(120) # 右轉(zhuǎn)120度,準(zhǔn)備繪制下一條邊
turtle.end_fill()
# 提起畫筆,移動(dòng)到右上角
turtle.penup()
turtle.goto(100, 150)
# 放下畫筆,開始繪制
turtle.pendown()
# 繪制第二朵雪花,填充橙色
turtle.fillcolor("orange")
turtle.begin_fill()
for i in range(3):
    koch_snowflake(100, 3) # 調(diào)用函數(shù),繪制邊長為100,級(jí)數(shù)為3的科赫曲線
    turtle.right(120)
turtle.end_fill()
# 提起畫筆,移動(dòng)到右下角
turtle.penup()
turtle.goto(200, -50)
# 放下畫筆,開始繪制
turtle.pendown()
# 繪制第三朵雪花,填充米色
turtle.fillcolor("beige")
turtle.begin_fill()
for i in range(3):
    koch_snowflake(150, 3) # 調(diào)用函數(shù),繪制邊長為150,級(jí)數(shù)為3的科赫曲線
    turtle.right(120)
turtle.end_fill()
# 結(jié)束繪制,保持窗口
turtle.done()

運(yùn)行結(jié)果

3.2分析花千樹的結(jié)構(gòu),設(shè)計(jì)遞歸算法,畫一棵花千樹,如下圖所示,顏色自選

# 導(dǎo)入turtle模塊
import turtle
# 導(dǎo)入random模塊
import random

# 定義一個(gè)繪制樹枝的函數(shù)
def draw_branch(t, length, angle, color):
    # 如果長度大于5,繼續(xù)繪制
    if length > 5:
        # 設(shè)置畫筆顏色
        t.color(color)
        # 向前移動(dòng)指定長度
        t.forward(length)
        # 向右轉(zhuǎn)指定角度
        t.right(angle)
        # 遞歸繪制右邊的樹枝
        draw_branch(t, length - random.randint(10, 20), angle - random.randint(10, 20), color)
        # 向左轉(zhuǎn)兩倍的角度
        t.left(2 * angle)
        # 遞歸繪制左邊的樹枝
        draw_branch(t, length - random.randint(10, 20), angle - random.randint(10, 20), color)
        # 向右轉(zhuǎn)回原來的角度
        t.right(angle)
        # 后退指定長度
        t.backward(length)

# 定義一個(gè)繪制花朵的函數(shù)
def draw_flower(t, x, y, size, color):
    # 抬起畫筆
    t.penup()
    # 移動(dòng)到指定位置
    t.goto(x, y)
    # 放下畫筆
    t.pendown()
    # 設(shè)置畫筆顏色
    t.color(color)
    # 開始填充
    t.begin_fill()
    # 循環(huán)八次
    for i in range(8):
        # 向前移動(dòng)指定大小
        t.forward(size)
        # 向左轉(zhuǎn)45度
        t.left(45)
    # 結(jié)束填充
    t.end_fill()

# 創(chuàng)建一個(gè)turtle對(duì)象
t = turtle.Turtle()
# 設(shè)置畫筆粗細(xì)
t.pensize(3)
# 設(shè)置畫筆速度
t.speed(10)
# 抬起畫筆
t.penup()
# 后退200像素
t.backward(200)
# 放下畫筆
t.pendown()
# 設(shè)置畫筆顏色為棕色
t.color("brown")
# 向左轉(zhuǎn)90度
t.left(90)
# 調(diào)用繪制樹枝的函數(shù),參數(shù)為turtle對(duì)象,長度為100,角度為30,顏色為棕色
draw_branch(t, 100, 30, "brown")
# 抬起畫筆
t.penup()
# 隱藏畫筆
t.hideturtle()
# 獲取屏幕對(duì)象
s = turtle.Screen()
# 獲取屏幕上所有的畫筆對(duì)象
pens = s.turtles()
# 遍歷所有的畫筆對(duì)象
for p in pens:
    # 獲取畫筆的位置
    x, y = p.pos()
    # 獲取畫筆的顏色
    color = p.color()[0]
    # 如果顏色是棕色,說明是樹枝
    if color == "brown":
        # 以一定的概率在樹枝上繪制花朵
        if random.random() < 0.3:
            # 隨機(jī)選擇一個(gè)花朵的顏色
            flower_color = random.choice(["pink", "red", "purple", "yellow"])
            # 隨機(jī)選擇一個(gè)花朵的大小
            flower_size = random.randint(5, 10)
            # 調(diào)用繪制花朵的函數(shù),參數(shù)為turtle對(duì)象,位置,大小,顏色
            draw_flower(t, x, y, flower_size, flower_color)
# 保持窗口
turtle.done()

運(yùn)行結(jié)果

總結(jié) 

到此這篇關(guān)于Python使用turtle庫繪制科赫雪花的文章就介紹到這了,更多相關(guān)Python turtle庫繪制科赫雪花內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python基于whois模塊簡(jiǎn)單識(shí)別網(wǎng)站域名及所有者的方法

    Python基于whois模塊簡(jiǎn)單識(shí)別網(wǎng)站域名及所有者的方法

    這篇文章主要介紹了Python基于whois模塊簡(jiǎn)單識(shí)別網(wǎng)站域名及所有者的方法,簡(jiǎn)單分析了Python whois模塊的安裝及使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • Python的語言類型(詳解)

    Python的語言類型(詳解)

    下面小編就為大家?guī)硪黄狿ython的語言類型(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 解決python-redis-lock分布式鎖的問題

    解決python-redis-lock分布式鎖的問題

    這篇文章主要介紹了python-redis-lock分布式鎖的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Python類屬性與實(shí)例屬性用法分析

    Python類屬性與實(shí)例屬性用法分析

    這篇文章主要介紹了Python類屬性與實(shí)例屬性用法,實(shí)例分析了Python類屬性與實(shí)例屬性的功能、定義與使用技巧,需要的朋友可以參考下
    2015-05-05
  • python celery分布式任務(wù)隊(duì)列的使用詳解

    python celery分布式任務(wù)隊(duì)列的使用詳解

    這篇文章主要介紹了python celery分布式任務(wù)隊(duì)列的使用詳解,Celery 是一個(gè) 基于python開發(fā)的分布式異步消息任務(wù)隊(duì)列,通過它可以輕松的實(shí)現(xiàn)任務(wù)的異步處理, 如果你的業(yè)務(wù)場(chǎng)景中需要用到異步任務(wù),就可以考慮使用celery,需要的朋友可以參考下
    2019-07-07
  • 利用Python搶回在螞蟻森林逝去的能量(實(shí)現(xiàn)代碼)

    利用Python搶回在螞蟻森林逝去的能量(實(shí)現(xiàn)代碼)

    螞蟻森林是一項(xiàng)旨在帶動(dòng)公眾低碳減排的公益項(xiàng)目,每個(gè)人的低碳行為在螞蟻森林里可計(jì)為"綠色能量",很多小伙伴都玩過,今天小編給大家分享一篇教程關(guān)于Python搶回在螞蟻森林逝去的能量,感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • Python osgeo庫安裝失敗問題的解決方案

    Python osgeo庫安裝失敗問題的解決方案

    Osgeo是一個(gè)支持開源地理空間數(shù)據(jù)處理的基金會(huì),我們可以在python中使用“osgeo”庫來訪問其提供的高效地理空間數(shù)據(jù),在PyCharm安裝osgeo庫的時(shí)候,顯示報(bào)錯(cuò),所以本文記錄一下解決這個(gè)麻煩的步驟,需要的朋友可以參考下
    2025-04-04
  • Python中time模塊與datetime模塊在使用中的不同之處

    Python中time模塊與datetime模塊在使用中的不同之處

    這篇文章主要介紹了Python中time模塊與datetime模塊在使用中的不同之處,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • 使用Python將JSON,XML和YAML數(shù)據(jù)寫入Excel文件

    使用Python將JSON,XML和YAML數(shù)據(jù)寫入Excel文件

    JSON、XML和YAML作為主流結(jié)構(gòu)化數(shù)據(jù)格式,因其層次化表達(dá)能力和跨平臺(tái)兼容性,已成為系統(tǒng)間數(shù)據(jù)交換的通用載體,本文將介紹如何使用Python導(dǎo)入JSON、XML和YAML格式數(shù)據(jù)到Excel文件中,需要的可以參考下
    2025-04-04
  • Python實(shí)現(xiàn)加密接口測(cè)試方法步驟詳解

    Python實(shí)現(xiàn)加密接口測(cè)試方法步驟詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)加密接口測(cè)試方法步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

盐津县| 龙岩市| 东莞市| 临汾市| 沙田区| 澳门| 廉江市| 滦平县| 宿州市| 信丰县| 广昌县| 内黄县| 龙游县| 尚志市| 靖宇县| 历史| 闽清县| 宁津县| 当涂县| 长垣县| 扎兰屯市| 通榆县| 康平县| 盈江县| 来凤县| 和林格尔县| 太保市| 景宁| 临泽县| 观塘区| 沁阳市| 鲜城| 贵南县| 灵山县| 曲周县| 平乐县| 新巴尔虎右旗| 新丰县| 曲阳县| 三门县| 永德县|