用python繪制櫻花樹
黑夜可能漫長,但總會迎來溫暖的陽光,三月如期而至,武大的櫻花又一次盛開。那么今天就一起來看看怎樣在python中畫一棵美麗的櫻花樹~
說到用python畫畫,那當(dāng)然就是小烏龜Turtle庫了,為啥是turtle呢,想象一個(gè)小烏龜,在一個(gè)橫軸為x、縱軸為y的坐標(biāo)系原點(diǎn),(0,0)位置開始,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動,從而在它爬行的路徑上繪制了圖形。
一、安裝與引入
安裝沒有什么難度直接pip安裝就可以
pip install turtle
可使用以下3種方法引入:

二、使用
turtle庫使用起來也很簡單,主要就是利用幾個(gè)核心的控制代碼
turtle.goto(x,y):直接跳轉(zhuǎn)到(x,y)點(diǎn),以繪圖窗口中心為原點(diǎn), turtle.fd(d):以當(dāng)前方向,往前行進(jìn)d像素。 turtle.bk(d):保持當(dāng)前方向不變,往后退行d像素。 turtle.circle(r,angle):以r為半徑圓的angle角度旋轉(zhuǎn)。 turtle.penup():抬筆 turtle.pendown():落筆 urtle.left(angle):向左旋轉(zhuǎn)angle度。 turtle.right(angle):向右旋轉(zhuǎn)angle度。
比如繪制樹干部分的代碼可以這樣寫
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 6 <= branch <= 12: #
if random.randint(0, 2) == 0: #隨機(jī)繪制
t.color('snow') #設(shè)置顏色
else:
t.color('lightcoral') # 樹葉顏色
t.pensize(branch / 3)
elif branch < 6:
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()
而寫字的部分就不用一筆一劃的去繪制,直接使用turtle.write()就可以在指定位置寫上你需要的文字。
write(arg,move=false,align='left',font=('arial',8,'normal'))
#arg--將寫入Turtle繪畫屏幕的文字。
#align(可選)--“左(left)”、“中(center)”或“右(right)”之一。
#font(可選)--(fontname、fontsize、fonttype)。
那么來看看最后效果吧!

完整源碼:
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)
w.screensize(bg='wheat') # wheat小麥
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
# 畫櫻花的軀干
Tree(60, t)
# 掉落的花瓣
Petal(200, t)
w.exitonclick()
以上就是用python繪制櫻花樹的詳細(xì)內(nèi)容,更多關(guān)于python繪圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)的排列組合計(jì)算操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)的排列組合計(jì)算操作,涉及Python數(shù)學(xué)運(yùn)算的相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下2017-10-10
下載與當(dāng)前Chrome對應(yīng)的chromedriver.exe(用于python+selenium)
這篇文章主要介紹了下載與當(dāng)前Chrome對應(yīng)的chromedriver.exe(用于python+selenium),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
python ceiling divide 除法向上取整(或小數(shù)向上取整)的實(shí)例
今天小編就為大家分享一篇python ceiling divide 除法向上取整 (或小數(shù)向上取整)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python通過cookie模擬已登錄狀態(tài)的初步研究
對于那些需要在登錄環(huán)境下進(jìn)行的爬蟲操作,模擬登陸或偽裝已登錄狀態(tài)是一個(gè)剛性需求。這篇文章主要介紹了python通過cookie模擬已登錄狀態(tài)的相關(guān)資料,需要的朋友可以參考下2016-11-11
python使用in操作符時(shí)元組和數(shù)組的區(qū)別分析
有時(shí)候要判斷一個(gè)數(shù)是否在一個(gè)序列里面,這時(shí)就會用到in運(yùn)算符來判斷成員資格,如果條件為真時(shí),就會返回true,條件為假時(shí),返回一個(gè)flase。這樣的運(yùn)算符叫做布爾運(yùn)算符,其真值叫做布爾值。2015-05-05
Python之虛擬環(huán)境virtualenv,pipreqs生成項(xiàng)目依賴第三方包的方法
今天小編就為大家分享一篇Python之虛擬環(huán)境virtualenv,pipreqs生成項(xiàng)目依賴第三方包的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python實(shí)現(xiàn)堆棧與隊(duì)列的方法
這篇文章主要介紹了python實(shí)現(xiàn)堆棧與隊(duì)列的方法,包含了堆棧與隊(duì)列的定義方法及常用操作,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
Python3 利用requests 庫進(jìn)行post攜帶賬號密碼請求數(shù)據(jù)的方法
今天小編就為大家分享一篇Python3 利用requests 庫進(jìn)行post攜帶賬號密碼請求數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10

