網站首頁 編程語言 正文
前言:
Python 中的畫圖工具——turtle(海龜繪圖),turtle 是 Python 中自帶的繪圖模塊,最初來自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所創造的 Logo 編程語言。
使用 turtle 控制畫筆在畫板上畫畫。而這個畫筆是有形狀的,默認是一個小箭頭,我們可以使用 turtle.shape('turtle') 將其設成一個小海龜。除了變成小海龜外,還支持傳入 'arrow'(箭頭),'circle'(圓),'square'(正方形),'triangle'(三角形)和 'classic'(經典).
畫筆的顏色默認是黑色的,我們可以使用turtle.color('red')
改成紅色的。當然,你也可以使用 turtle.color('yellow') 改成黃色,使用turtle.color('pink')
改成粉色等等。
一、畫一個N邊形
import turtle ? turtle.color('red') #將畫筆顏色設置成紅色 turtle.hideturtle() #隱藏小海龜 ? #畫一個n邊形 def draw_polygon(n): ? for i in range(n): ? ? turtle.forward(100) ? ? turtle.right(360/n) ? draw_polygon(5) ? ? #畫一個五邊形 turtle.done()
二、畫五角星
五角星每個角的度數都是 36 度,用 180 - 36 得到對應的補角為 144 度。
如下圖所示:
五角星的五條線的長度是一樣的,并且角度也一樣。那么,我們就可以用循環來畫五角星。五角星要畫 5 條線,因此要循環 5 次。每次循環都除了畫一條線,還要旋轉特定的角度。從上圖可知,每次向右旋轉 144 度即可。
所以畫五角星的代碼如下:
import turtle ? turtle.color('red') ?# 畫筆顏色和填充顏色都設為紅色 turtle.hideturtle() ?#隱藏小海龜 ? turtle.begin_fill() ?#開始填充 for i in range(5): ? turtle.forward(100)#向前走100像素 ? turtle.right(144) ?#右轉144度 turtle.end_fill() ? ?#結束填充
打印出結果其實上圖五角星不在畫板中央,我們將它移動到畫板中央
注意:(-50, 20) 只是針對邊長 100 像素的五角星,不要隨意修改邊長。
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()
三、一閃一閃亮晶晶
我們來畫一堆星星,實現“一閃一閃亮晶晶,滿天都是小星星”的效果~??
因為畫的星星比較多,我們先把之前畫五角星的代碼封裝成一個函數:
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()
星星的光是白色的,因此我將顏色設置成了白色(white
)。并且,因為是小星星,我將邊長設成了 10 像素。畫一個小星星的方法搞定了,接下來是畫滿天星,就畫 50 個吧!
滿天星的位置都是隨機的,我們需要用到 random 模塊生成隨機位置。因為教學環境中顯示區域有限,隨機位置在 x 軸上的范圍是 -150 到 150,在 y 軸上的范圍是 -100 到 100。
隨機畫 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()
應該注意到了 turtle.speed(0)
這行代碼,這是控制繪圖速度的。因為畫 50 顆小星星耗時較久,所以要加快繪圖速度。 turtle.speed(0) 的參數是 0-10 的整數,其中 1-10 數字越大,繪圖速度越快。1 最慢,10 最快,默認是 6。而 0 表示沒有動畫效果,因此 0 比 10 的速度還要快。
滿天星畫完了,我們最后再署個名。調用turtle.write()
可以在畫板上寫字,參數為要寫的內容。我們還能設置字的字體、大小等,比如 turtle.write('By 黃幫主', font = ('SimHei', 12, 'bold'))。font 參數是個元組,其中第一個是字體,第二個是字體大小,最后一個是字重。
為了讓文字更清晰可見,我將字體設置成了黑體!12 像素!加粗!完整的代碼如下:
import turtle from random import randint ? def draw_star(): ? # 補全畫一顆星星的代碼 ? turtle.color('red') ? 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) ? 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()
最終結果:
原文鏈接:https://blog.csdn.net/weixin_43734080/article/details/123243039
相關推薦
- 2022-08-10 淺談pandas關于查看庫或依賴庫版本的API原理_python
- 2022-06-11 Python語法學習之進程池與進程鎖詳解_python
- 2022-09-22 k8s 存儲卷之 PV & PVC
- 2023-10-15 動態演示操作系統進程調度算法,FCFS, RR, SPN, SRT, HRRN
- 2022-07-17 Python中使用tkFileDialog實現文件選擇、保存和路徑選擇_python
- 2022-09-06 C語言用函數指針實現一個特別的計算器_C 語言
- 2022-07-16 CMake下調用anaconda的pytorch及numpy傳參CV::Mat給python(多線程
- 2022-06-29 基于C++實現五子棋小游戲_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支