基于Python中的turtle繪畫星星和星空
前言:
Python 中的畫圖工具——turtle(海龜繪圖),turtle 是 Python 中自帶的繪圖模塊,最初來自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所創(chuàng)造的 Logo 編程語言。
使用 turtle 控制畫筆在畫板上畫畫。而這個(gè)畫筆是有形狀的,默認(rèn)是一個(gè)小箭頭,我們可以使用 turtle.shape('turtle') 將其設(shè)成一個(gè)小海龜。除了變成小海龜外,還支持傳入 'arrow'(箭頭),'circle'(圓),'square'(正方形),'triangle'(三角形)和 'classic'(經(jīng)典).
畫筆的顏色默認(rèn)是黑色的,我們可以使用turtle.color('red')
改成紅色的。當(dāng)然,你也可以使用 turtle.color('yellow') 改成黃色,使用turtle.color('pink')
改成粉色等等。
一、畫一個(gè)N邊形
import turtle ? turtle.color('red') #將畫筆顏色設(shè)置成紅色 turtle.hideturtle() #隱藏小海龜 ? #畫一個(gè)n邊形 def draw_polygon(n): ? for i in range(n): ? ? turtle.forward(100) ? ? turtle.right(360/n) ? draw_polygon(5) ? ? #畫一個(gè)五邊形 turtle.done()
二、畫五角星
五角星每個(gè)角的度數(shù)都是 36 度,用 180 - 36 得到對(duì)應(yīng)的補(bǔ)角為 144 度。
如下圖所示:
五角星的五條線的長(zhǎng)度是一樣的,并且角度也一樣。那么,我們就可以用循環(huán)來畫五角星。五角星要畫 5 條線,因此要循環(huán) 5 次。每次循環(huán)都除了畫一條線,還要旋轉(zhuǎn)特定的角度。從上圖可知,每次向右旋轉(zhuǎn) 144 度即可。
所以畫五角星的代碼如下:
import turtle ? turtle.color('red') ?# 畫筆顏色和填充顏色都設(shè)為紅色 turtle.hideturtle() ?#隱藏小海龜 ? turtle.begin_fill() ?#開始填充 for i in range(5): ? turtle.forward(100)#向前走100像素 ? turtle.right(144) ?#右轉(zhuǎn)144度 turtle.end_fill() ? ?#結(jié)束填充
打印出結(jié)果其實(shí)上圖五角星不在畫板中央,我們將它移動(dòng)到畫板中央
注意:(-50, 20) 只是針對(duì)邊長(zhǎng) 100 像素的五角星,不要隨意修改邊長(zhǎng)。
import turtle ? turtle.color('red') turtle.hideturtle() turtle.penup() turtle.goto(-50,20) turtle.pendown() ? turtle.begin_fill() for i in range(5): ? turtle.forward(100) ? turtle.right(144) turtle.end_fill() turtle.done()
三、一閃一閃亮晶晶
我們來畫一堆星星,實(shí)現(xiàn)“一閃一閃亮晶晶,滿天都是小星星”的效果~?
因?yàn)楫嫷男切潜容^多,我們先把之前畫五角星的代碼封裝成一個(gè)函數(shù):
import turtle ? def draw_star(): ? turtle.color('white') ? turtle.hideturtle() ? turtle.begin_fill() ? for i in range(5): ? ? turtle.forward(10) ? ? turtle.right(144) ? turtle.end_fill()
星星的光是白色的,因此我將顏色設(shè)置成了白色(white
)。并且,因?yàn)槭切⌒切?,我將邊長(zhǎng)設(shè)成了 10 像素。畫一個(gè)小星星的方法搞定了,接下來是畫滿天星,就畫 50 個(gè)吧!
滿天星的位置都是隨機(jī)的,我們需要用到 random 模塊生成隨機(jī)位置。因?yàn)榻虒W(xué)環(huán)境中顯示區(qū)域有限,隨機(jī)位置在 x 軸上的范圍是 -150 到 150,在 y 軸上的范圍是 -100 到 100。
隨機(jī)畫 50 顆小星星的代碼如下:
import turtle from random import randint ? def draw_star(): ? turtle.color('white') ? turtle.hideturtle() ? turtle.begin_fill() ? for i in range(5): ? ? turtle.forward(10) ? ? turtle.right(144) ? turtle.end_fill() ? for i in range(50): ? turtle.speed(0) ?# 最快速 ? turtle.penup() ? x = randint(-150, 150) ?# x 軸 ? y = randint(-100, 100) ?# y 軸 ? turtle.goto(x, y) ? turtle.pendown() ? draw_star()
應(yīng)該注意到了 turtle.speed(0)
這行代碼,這是控制繪圖速度的。因?yàn)楫?50 顆小星星耗時(shí)較久,所以要加快繪圖速度。 turtle.speed(0) 的參數(shù)是 0-10 的整數(shù),其中 1-10 數(shù)字越大,繪圖速度越快。1 最慢,10 最快,默認(rèn)是 6。而 0 表示沒有動(dòng)畫效果,因此 0 比 10 的速度還要快。
滿天星畫完了,我們最后再署個(gè)名。調(diào)用turtle.write()
可以在畫板上寫字,參數(shù)為要寫的內(nèi)容。我們還能設(shè)置字的字體、大小等,比如 turtle.write('By 黃幫主', font = ('SimHei', 12, 'bold'))。font 參數(shù)是個(gè)元組,其中第一個(gè)是字體,第二個(gè)是字體大小,最后一個(gè)是字重。
為了讓文字更清晰可見,我將字體設(shè)置成了黑體!12 像素!加粗!完整的代碼如下:
import turtle from random import randint ? def draw_star(): ? # 補(bǔ)全畫一顆星星的代碼 ? turtle.color('red') ? turtle.hideturtle() ? turtle.begin_fill() ? for i in range(5): ? ? turtle.forward(10) ? ? turtle.right(144) ? turtle.end_fill() ?? ? # 將 ??? 改成你想畫的星星個(gè)數(shù) for i in range(50): ? turtle.speed(0) ? turtle.penup() ? x = randint(-150, 150) ? y = randint(-100, 100) ? turtle.goto(x, y) ? turtle.pendown() ? draw_star() ? turtle.penup() turtle.goto(0, -130) turtle.pendown() turtle.write('一閃一閃亮晶晶', ?font = ('SimHei', 12, 'bold')) turtle.done()
最終結(jié)果:
相關(guān)文章
人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型示例詳解
這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11解決python matplotlib imshow無法顯示的問題
今天小編就為大家分享一篇解決python matplotlib imshow無法顯示的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python中使用第三方庫(kù)xlutils來追加寫入Excel文件示例
這篇文章主要介紹了Python中使用第三方庫(kù)xlutils來追加寫入Excel文件示例,本文直接給出追加寫入示例和追加效果,需要的朋友可以參考下2015-04-04pandas參數(shù)設(shè)置的實(shí)用小技巧
這篇文章主要給大家介紹了關(guān)于pandas參數(shù)設(shè)置的實(shí)用小技巧,文中通過實(shí)例代碼結(jié)束的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用pandas具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08python使用pip安裝SciPy、SymPy、matplotlib教程
今天小編大家分享一篇python使用pip安裝SciPy、SymPy、matplotlib教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11python 3利用Dlib 19.7實(shí)現(xiàn)攝像頭人臉檢測(cè)特征點(diǎn)標(biāo)定
這篇文章主要為大家詳細(xì)介紹了python 3利用Dlib 19.7實(shí)現(xiàn)攝像頭人臉檢測(cè)特征點(diǎn)標(biāo)定,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02