今天主要講一下怎麼透過python和turtle繪製國旗。先看效果圖。
執行效果圖
第一步:透過cad或caxa繪製出國旗形狀(必須按照國家標準規定的尺寸進行)。
用cad或caxa繪製出國旗
第二步:透過cad或caxa將需要繪製的國旗尺寸進行標註,透過python繪製時需要用到。
標註尺寸
第三步:開啟pycharm,建立python檔案,結合第二步的尺寸定義畫布座標(大小)並實現繪製國旗程式碼(呼叫turtle庫)的編寫,實現繪製國旗的效果。
import turtlet=turtle.Pen()t.hideturtle() #隱藏畫筆的形狀#畫國旗背景圖t.color('red')t.fillcolor('red')t.penup()t.goto(-480,320)t.pendown()t.begin_fill()t.forward(960)t.right(90)t.forward(640)t.right(90)t.forward(960)t.right(90)t.forward(640)t.end_fill()#繪製中心五角星t.penup()t.goto(-320,256)t.right(162)t.pendown()t.color('yellow')t.fillcolor('yellow')t.begin_fill()t.forward(69.7)t.left(72)t.forward(69.7)t.right(144)t.forward(69.7)t.left(72)t.forward(69.7)t.right(144)t.forward(69.7)t.left(72)t.forward(69.7)t.right(144)t.forward(69.7)t.left(72)t.forward(69.7)t.right(144)t.forward(69.7)t.left(72)t.forward(69.7)t.end_fill()#繪製右上第一個小五角星t.penup()t.goto(-147.5,285.4)t.right(167.04)t.pendown()t.fillcolor('yellow')t.begin_fill()t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.end_fill()#繪製右上第二個小五角星t.penup()t.goto(-110.1,220.7)t.right(94.83)t.pendown()t.fillcolor('yellow')t.begin_fill()t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.end_fill()#繪製右上第三個小五角星t.penup()t.goto(-96,128)t.right(170.13)t.pendown()t.fillcolor('yellow')t.begin_fill()t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.end_fill()#繪製右上第四個小五角星t.penup()t.goto(-148.7,61.9)t.right(164.66)t.pendown()t.fillcolor('yellow')t.begin_fill()t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.end_fill()#新增文字t.penup()t.color('red')t.goto(-100,-380)t.pendown()t.write("我愛你中國",font=("Times",30,"bold"))
第四步:透過觀察程式碼,發現繪製五角星時,其中有幾步是重複的,可以透過for語句進行迴圈,減少程式碼數量。
import turtle as t#隱藏畫筆的形狀t.hideturtle()#設定畫布大小t.screensize(1,1)#畫國旗背景圖t.color('red')t.fillcolor('red')t.penup()t.goto(-480,320)t.pendown()t.begin_fill()t.forward(960)t.right(90)t.forward(640)t.right(90)t.forward(960)t.right(90)t.forward(640)t.end_fill()#繪製中心五角星t.penup()t.goto(-320,256)t.right(162)t.pendown()t.color('yellow')t.fillcolor('yellow')t.begin_fill()for i in range(1,5):#迴圈4次 t.forward(69.7) t.left(72) t.forward(69.7) t.right(144)t.forward(69.7)t.left(72)t.forward(69.7)t.end_fill()#繪製右上第一個小五角星t.penup()t.goto(-147.5,285.4)t.right(167.04)t.pendown()t.fillcolor('yellow')t.begin_fill()for i in range(1,5):#迴圈4次 t.forward(23.2) t.left(72) t.forward(23.2) t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.end_fill()#繪製右上第二個小五角星t.penup()t.goto(-110.1,220.7)t.right(94.83)t.pendown()t.fillcolor('yellow')t.begin_fill()for i in range(1,5):#迴圈4次 t.forward(23.2) t.left(72) t.forward(23.2) t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.end_fill()#繪製右上第三個小五角星t.penup()t.goto(-96,128)t.right(170.13)t.pendown()t.fillcolor('yellow')t.begin_fill()for i in range(1,5):#迴圈4次 t.forward(23.2) t.left(72) t.forward(23.2) t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.end_fill()#繪製右上第四個小五角星t.penup()t.goto(-148.7,61.9)t.right(164.66)t.pendown()t.fillcolor('yellow')t.begin_fill()for i in range(1,5):#迴圈4次 t.forward(23.2) t.left(72) t.forward(23.2) t.right(144)t.forward(23.2)t.left(72)t.forward(23.2)t.end_fill()#新增文字t.penup()t.color('red')t.goto(-100,-380)t.pendown()t.write("我愛你中國",font=("Times",30,"bold"))
第五步:再次觀察程式碼,可以透過將for語句建立為函式,並透過呼叫函式的形式繪製五角星,以此達到再次最佳化程式碼的效果。
import turtle as t#隱藏畫筆的形狀t.hideturtle()#設定畫布大小t.screensize(1,1)#設定背景迴圈函式def bj(): t.pendown() t.begin_fill() for i in range(1,3): t.forward(960) t.right(90) t.forward(640) t.right(90) t.end_fill()#設定中心五角星迴圈函式def wj1(): t.pendown() t.fillcolor('yellow') t.begin_fill() for i in range(1, 5): # 迴圈4次 t.forward(69.7) t.left(72) t.forward(69.7) t.right(144) t.forward(69.7) t.left(72) t.forward(69.7) t.end_fill()#設定小五角星迴圈函式def wj2(): t.pendown() t.fillcolor('yellow') t.begin_fill() for i in range(1, 5): # 迴圈4次 t.forward(23.2) t.left(72) t.forward(23.2) t.right(144) t.forward(23.2) t.left(72) t.forward(23.2) t.end_fill()#畫國旗背景圖t.color('red')t.fillcolor('red')t.penup()t.goto(-480,320)bj()#繪製中心五角星t.penup()t.goto(-320,256)t.right(72)t.color('yellow')wj1()#繪製右上第一個小五角星t.penup()t.goto(-147.5,285.4)t.right(167.04)wj2()#繪製右上第二個小五角星t.penup()t.goto(-110.1,220.7)t.right(94.83)wj2()#繪製右上第三個小五角星t.penup()t.goto(-96,128)t.right(170.13)wj2()#繪製右上第四個小五角星t.penup()t.goto(-148.7,61.9)t.right(164.66)wj2()#新增文字t.penup()t.color('red')t.goto(-100,-380)t.pendown()t.write("我愛你中國",font=("Times",30,"bold"))
最新評論