實戰(zhàn)!用 Python 畫國家國旗!

文 |?野客
來源:Python 技術(shù)「ID: pythonall」

國旗是一個國家的象征,它可以反映一個國家的特色和傳統(tǒng),國旗起源于近代的歐洲,是一個國家主權(quán)意識不斷增強后的必然產(chǎn)物,本文我們使用 Python 來畫幾面國旗,使用的 Python 庫是大家比較熟悉的 turtle。
五星紅旗
五星紅旗是中華人民共和國的國旗,它是由四顆小的黃五角星環(huán)繞一顆大的黃五角星組成的,底色為紅色,實現(xiàn)代碼如下:
turtle.setup(600,400,0,0)
turtle.bgcolor("red")
turtle.fillcolor("yellow")
turtle.color('yellow')
turtle.speed(10)
#?主星
turtle.begin_fill()
turtle.up()
turtle.goto(-280,100)
turtle.down()
for?i?in?range?(5):
????turtle.forward(150)
????turtle.right(144)
turtle.end_fill()
#?副星
turtle.begin_fill()
turtle.up()
turtle.goto(-100,180)
turtle.setheading(305)
turtle.down()
for?i?in?range?(5):
????turtle.forward(50)
????turtle.left(144)
turtle.end_fill()
turtle.begin_fill()
turtle.up()
turtle.goto(-50,110)
turtle.setheading(30)
turtle.down()
for?i?in?range?(5):
????turtle.forward(50)
????turtle.right(144)
turtle.end_fill()
turtle.begin_fill()
turtle.up()
turtle.goto(-40,50)
turtle.setheading(5)
turtle.down()
for?i?in?range?(5):
????turtle.forward(50)
????turtle.right(144)
turtle.end_fill()
turtle.begin_fill()
turtle.up()
turtle.goto(-100,10)
turtle.setheading(300)
turtle.down()
for?i?in?range?(5):
????turtle.forward(50)
????turtle.left(144)
turtle.end_fill()
turtle.hideturtle()
turtle.done()
實現(xiàn)效果如下:

紅底白十字旗
紅底白十字旗是瑞士的國旗,與其他國家有點不同,瑞士的國旗形狀是正方形的,代表了該國堅守中立的政策,實現(xiàn)代碼如下:
def?draw_crossshaped(aTurtle,?width=0,?height=0,?color=None):
????aTurtle?=?turtle.Turtle()
????aTurtle.hideturtle()
????aTurtle.penup()
????aTurtle.goto(30,?50)
????aTurtle.begin_fill()
????aTurtle.fillcolor(color)
????for?i?in?range(4):
????????aTurtle.pendown()
????????aTurtle.fd(width)
????????aTurtle.rt(90)
????????aTurtle.fd(height)
????????aTurtle.rt(90)
????????aTurtle.fd(width)
????????aTurtle.lt(90)
????aTurtle.end_fill()
def?draw_RQ(times=20.0):
????width,?height?=?26?*?times,?26?*?times
????window?=?turtle.Screen()
????aTurtle?=?turtle.Turtle()
????aTurtle.hideturtle()
????aTurtle.speed(10)
????aTurtle.penup()
????aTurtle.goto(-width?/?2,?height?/?2)
????aTurtle.pendown()
????aTurtle.begin_fill()
????aTurtle.fillcolor('red')
????aTurtle.fd(width)
????aTurtle.right(90)
????aTurtle.fd(height)
????aTurtle.right(90)
????aTurtle.fd(width)
????aTurtle.right(90)
????aTurtle.fd(height)
????aTurtle.right(90)
????aTurtle.end_fill()
????draw_crossshaped(aTurtle,?width=80,?height=80,?color='white')
????window.exitonclick()
實現(xiàn)效果如下:

星條旗
星條旗是美國的國旗,由兩部分組成,旗的左上方藍底上排列著 50 顆白色的星,其余部分是 13 道紅白相間的條子,實現(xiàn)代碼如下:
#?畫條紋
def?drawSquar():
????turtle.color('black',?'red')
????turtle.begin_fill()
????for?i?in?range(7):
????????turtle.forward(600)
????????turtle.left(90)
????????turtle.forward(350?/?13)
????????turtle.left(90)
????????turtle.forward(600)
????????turtle.right(90)
????????turtle.forward(350?/?13)
????????turtle.right(90)
????turtle.end_fill()
#?畫左上角的小矩形
def?drawSmallsqure():
????turtle.color('blue')
????turtle.begin_fill()
????turtle.left(90)
????turtle.forward(350?/?2)
????turtle.left(90)
????turtle.forward(300)
????turtle.left(90)
????turtle.forward(350?*?7?/?13)
????turtle.left(90)
????turtle.forward(300)
????turtle.end_fill()
#?畫左上角的星星
def?drawSrarts():
????x?=?-10
????y?=?0
????for?k?in?range(4):
????????x?=?-15
????????for?i?in?range(6):
????????????turtle.goto(x,?y)
????????????turtle.color('white')
????????????turtle.begin_fill()
????????????for?j?in?range(5):
????????????????turtle.left(144)
????????????????turtle.forward(20)
????????????x?-=?50
????????????turtle.end_fill()
????????y?+=?350?/?13?*?2
????x?=?-10
????y?=?350?/?13
????for?i?in?range(3):
????????x?=?-35
????????for?j?in?range(5):
????????????turtle.goto(x,?y)
????????????turtle.color('white')
????????????turtle.begin_fill()
????????????for?k?in?range(5):
????????????????turtle.left(144)
????????????????turtle.forward(20)
????????????x?-=?50
????????????turtle.end_fill()
????????y?+=?350?/?13?*?2
turtle.setup(0.8,?0.8,?-100,?-100)
turtle.speed(10)
turtle.pu()
turtle.forward(300)
turtle.left(90)
turtle.forward(350?/?2)
turtle.left(90)
drawSquar()
turtle.home()
drawSmallsqure()
turtle.home()
drawSrarts()
turtle.hideturtle()
turtle.done()
實現(xiàn)效果如下:

一點紅旗
一點紅旗是日本的國旗,構(gòu)成比較簡單,就是在長方形白底中點一個大紅點,實現(xiàn)代碼如下:
turtle.setup(width=600,?height=400)
#?設(shè)置畫筆起點
turtle.penup()
turtle.goto(0,?-50)
turtle.pendown()
#?設(shè)置畫筆屬性
turtle.pensize(5)
turtle.pencolor("red")
turtle.fillcolor("red")
#?繪制速度
turtle.speed(10)
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.hideturtle()
turtle.mainloop()
實現(xiàn)效果如下:

總結(jié)
本文我們使用 Python 繪制了幾面國旗,有興趣的可以嘗試繪制一下其他國家的國旗。
PS:公號內(nèi)回復(fù)「Python」即可進入Python 新手學(xué)習(xí)交流群,一起 100 天計劃!
老規(guī)矩,兄弟們還記得么,右下角的 “在看” 點一下,如果感覺文章內(nèi)容不錯的話,記得分享朋友圈讓更多的人知道!


【代碼獲取方式】
評論
圖片
表情
