實(shí)戰(zhàn)!用 Python 畫世界各國(guó)國(guó)旗!
↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能
后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包
文 |?野客
來(lái)源:Python 技術(shù)「ID: pythonall」

國(guó)旗是一個(gè)國(guó)家的象征,它可以反映一個(gè)國(guó)家的特色和傳統(tǒng),國(guó)旗起源于近代的歐洲,是一個(gè)國(guó)家主權(quán)意識(shí)不斷增強(qiáng)后的必然產(chǎn)物,本文我們使用 Python 來(lái)畫幾面國(guó)旗,使用的 Python 庫(kù)是大家比較熟悉的 turtle。
五星紅旗
五星紅旗是中華人民共和國(guó)的國(guó)旗,它是由四顆小的黃五角星環(huán)繞一顆大的黃五角星組成的,底色為紅色,實(shí)現(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()
實(shí)現(xiàn)效果如下:

紅底白十字旗
紅底白十字旗是瑞士的國(guó)旗,與其他國(guó)家有點(diǎn)不同,瑞士的國(guó)旗形狀是正方形的,代表了該國(guó)堅(jiān)守中立的政策,實(shí)現(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()
實(shí)現(xiàn)效果如下:

星條旗
星條旗是美國(guó)的國(guó)旗,由兩部分組成,旗的左上方藍(lán)底上排列著 50 顆白色的星,其余部分是 13 道紅白相間的條子,實(shí)現(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()
實(shí)現(xiàn)效果如下:

一點(diǎn)紅旗
一點(diǎn)紅旗是日本的國(guó)旗,構(gòu)成比較簡(jiǎn)單,就是在長(zhǎng)方形白底中點(diǎn)一個(gè)大紅點(diǎn),實(shí)現(xiàn)代碼如下:
turtle.setup(width=600,?height=400)
#?設(shè)置畫筆起點(diǎn)
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()
實(shí)現(xiàn)效果如下:

總結(jié)
本文我們使用 Python 繪制了幾面國(guó)旗,有興趣的可以嘗試?yán)L制一下其他國(guó)家的國(guó)旗。
點(diǎn)分享 點(diǎn)收藏 點(diǎn)點(diǎn)贊 點(diǎn)在看
評(píng)論
圖片
表情




