國旗是一個國家的象征,它可以反映一個國家的特色和傳統,國旗起源于近代的歐洲,是一個國家主權意識不斷增強后的必然產物,本文我們使用 Python 來畫幾面國旗,使用的 Python 庫是大家比較熟悉的 turtle,
五星紅旗
五星紅旗是中華人民共和國的國旗,它是由四顆小的黃五角星環繞一顆大的黃五角星組成的,底色為紅色,實作代碼如下:
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()
實作效果如下:

紅底白十字旗
紅底白十字旗是瑞士的國旗,與其他國家有點不同,瑞士的國旗形狀是正方形的,代表了該國堅守中立的政策,實作代碼如下:
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()
實作效果如下:

星條旗
星條旗是美國的國旗,由兩部分組成,旗的左上方藍底上排列著 50 顆白色的星,其余部分是 13 道紅白相間的條子,實作代碼如下:
# 畫條紋
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()
實作效果如下:

一點紅旗
一點紅旗是日本的國旗,構成比較簡單,就是在長方形白底中點一個大紅點,實作代碼如下:
turtle.setup(width=600, height=400)
# 設定畫筆起點
turtle.penup()
turtle.goto(0, -50)
turtle.pendown()
# 設定畫筆屬性
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()
實作效果如下:

原始碼在公眾號 Python小二 后臺回復 210127 獲取,
本文非首發于個人號
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265341.html
標籤:AI
