文 | 野客
来源:Python 技术「ID: pythonall」
国旗是一个国家的象征,它可以反映一个国家的特色和传统,国旗起源于近代的欧洲,是一个国家主权意识不断增强后的必然产物,本文我们使用 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 绘制了几面国旗,有兴趣的可以尝试绘制一下其他国家的国旗。
PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!
老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!
【代码获取方式】
识别文末二维码,回复:210130
转载:https://blog.csdn.net/weixin_48923393/article/details/113449527
查看评论