Python使用turtle庫繪制科赫雪花詳細(xì)代碼
實驗題目:
turtle庫的使用
實驗?zāi)康模?/h2>
掌握Python語言程序的基本結(jié)構(gòu)
掌握turtle庫的使用方法
編寫python程序,實現(xiàn)以下功能:
3.1把繪制科赫雪花的代碼封裝為函數(shù),繪制3朵以上的雪花,雪花出現(xiàn)的位置并不固定,并填充不同的顏色
# 導(dǎo)入turtle模塊
import turtle
# 定義繪制科赫雪花的函數(shù)
def koch_snowflake(size, level):
# 如果繪制的級數(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()
# 提起畫筆,移動到左下角
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,級數(shù)為3的科赫曲線
turtle.right(120) # 右轉(zhuǎn)120度,準(zhǔn)備繪制下一條邊
turtle.end_fill()
# 提起畫筆,移動到右上角
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,級數(shù)為3的科赫曲線
turtle.right(120)
turtle.end_fill()
# 提起畫筆,移動到右下角
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,級數(shù)為3的科赫曲線
turtle.right(120)
turtle.end_fill()
# 結(jié)束繪制,保持窗口
turtle.done()
運(yùn)行結(jié)果

3.2分析花千樹的結(jié)構(gòu),設(shè)計遞歸算法,畫一棵花千樹,如下圖所示,顏色自選
# 導(dǎo)入turtle模塊
import turtle
# 導(dǎo)入random模塊
import random
# 定義一個繪制樹枝的函數(shù)
def draw_branch(t, length, angle, color):
# 如果長度大于5,繼續(xù)繪制
if length > 5:
# 設(shè)置畫筆顏色
t.color(color)
# 向前移動指定長度
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)
# 定義一個繪制花朵的函數(shù)
def draw_flower(t, x, y, size, color):
# 抬起畫筆
t.penup()
# 移動到指定位置
t.goto(x, y)
# 放下畫筆
t.pendown()
# 設(shè)置畫筆顏色
t.color(color)
# 開始填充
t.begin_fill()
# 循環(huán)八次
for i in range(8):
# 向前移動指定大小
t.forward(size)
# 向左轉(zhuǎn)45度
t.left(45)
# 結(jié)束填充
t.end_fill()
# 創(chuàng)建一個turtle對象
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對象,長度為100,角度為30,顏色為棕色
draw_branch(t, 100, 30, "brown")
# 抬起畫筆
t.penup()
# 隱藏畫筆
t.hideturtle()
# 獲取屏幕對象
s = turtle.Screen()
# 獲取屏幕上所有的畫筆對象
pens = s.turtles()
# 遍歷所有的畫筆對象
for p in pens:
# 獲取畫筆的位置
x, y = p.pos()
# 獲取畫筆的顏色
color = p.color()[0]
# 如果顏色是棕色,說明是樹枝
if color == "brown":
# 以一定的概率在樹枝上繪制花朵
if random.random() < 0.3:
# 隨機(jī)選擇一個花朵的顏色
flower_color = random.choice(["pink", "red", "purple", "yellow"])
# 隨機(jī)選擇一個花朵的大小
flower_size = random.randint(5, 10)
# 調(diào)用繪制花朵的函數(shù),參數(shù)為turtle對象,位置,大小,顏色
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas讀取文件夾下所有excel文件的實現(xiàn)
最近需要做一個需求,要求匯總一個文件夾所有的excel文件,所以本文就來介紹一下pandas讀取文件夾下所有excel文件的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-09-09
Django添加favicon.ico圖標(biāo)的示例代碼
這篇文章主要介紹了Django添加favicon.ico圖標(biāo)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
Pytorch+PyG實現(xiàn)EdgeCNN過程示例詳解
這篇文章主要為大家介紹了Pytorch+PyG實現(xiàn)EdgeCNN過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04

