首頁>技術>

今天主要講一下怎麼透過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"))

8
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 全球首發:鴻蒙開源平臺OpenGL