飞道的博客

实战!用 Python 画国家国旗!

424人阅读  评论(0)

文 | 野客

来源:Python 技术「ID: pythonall」

国旗是一个国家的象征,它可以反映一个国家的特色和传统,国旗起源于近代的欧洲,是一个国家主权意识不断增强后的必然产物,本文我们使用 Python 来画几面国旗,使用的 Python 库是大家比较熟悉的 turtle。

五星红旗

五星红旗是中华人民共和国的国旗,它是由四颗小的黄五角星环绕一颗大的黄五角星组成的,底色为红色,实现代码如下:


   
  1. turtle.setup( 600, 400, 0, 0)
  2. turtle.bgcolor( "red")
  3. turtle.fillcolor( "yellow")
  4. turtle.color( 'yellow')
  5. turtle.speed( 10)
  6. # 主星
  7. turtle.begin_fill()
  8. turtle.up()
  9. turtle. goto( -280, 100)
  10. turtle.down()
  11. for i in  range ( 5):
  12.     turtle.forward( 150)
  13.     turtle.right( 144)
  14. turtle.end_fill()
  15. # 副星
  16. turtle.begin_fill()
  17. turtle.up()
  18. turtle. goto( -100, 180)
  19. turtle.setheading( 305)
  20. turtle.down()
  21. for i in  range ( 5):
  22.     turtle.forward( 50)
  23.     turtle.left( 144)
  24. turtle.end_fill()
  25. turtle.begin_fill()
  26. turtle.up()
  27. turtle. goto( -50, 110)
  28. turtle.setheading( 30)
  29. turtle.down()
  30. for i in  range ( 5):
  31.     turtle.forward( 50)
  32.     turtle.right( 144)
  33. turtle.end_fill()
  34. turtle.begin_fill()
  35. turtle.up()
  36. turtle. goto( -40, 50)
  37. turtle.setheading( 5)
  38. turtle.down()
  39. for i in  range ( 5):
  40.     turtle.forward( 50)
  41.     turtle.right( 144)
  42. turtle.end_fill()
  43. turtle.begin_fill()
  44. turtle.up()
  45. turtle. goto( -100, 10)
  46. turtle.setheading( 300)
  47. turtle.down()
  48. for i in  range ( 5):
  49.     turtle.forward( 50)
  50.     turtle.left( 144)
  51. turtle.end_fill()
  52. turtle.hideturtle()
  53. turtle.done()

实现效果如下:

红底白十字旗

红底白十字旗是瑞士的国旗,与其他国家有点不同,瑞士的国旗形状是正方形的,代表了该国坚守中立的政策,实现代码如下:


   
  1. def draw_crossshaped(aTurtle, width= 0, height= 0, color=None):
  2.     aTurtle = turtle.Turtle()
  3.     aTurtle.hideturtle()
  4.     aTurtle.penup()
  5.     aTurtle. goto( 3050)
  6.     aTurtle.begin_fill()
  7.     aTurtle.fillcolor(color)
  8.      for i in  range( 4):
  9.         aTurtle.pendown()
  10.         aTurtle.fd(width)
  11.         aTurtle.rt( 90)
  12.         aTurtle.fd(height)
  13.         aTurtle.rt( 90)
  14.         aTurtle.fd(width)
  15.         aTurtle.lt( 90)
  16.     aTurtle.end_fill()
  17. def draw_RQ(times= 20.0):
  18.     width, height =  26 * times,  26 * times
  19.     window = turtle.Screen()
  20.     aTurtle = turtle.Turtle()
  21.     aTurtle.hideturtle()
  22.     aTurtle.speed( 10)
  23.     aTurtle.penup()
  24.     aTurtle. goto(-width /  2, height /  2)
  25.     aTurtle.pendown()
  26.     aTurtle.begin_fill()
  27.     aTurtle.fillcolor( 'red')
  28.     aTurtle.fd(width)
  29.     aTurtle.right( 90)
  30.     aTurtle.fd(height)
  31.     aTurtle.right( 90)
  32.     aTurtle.fd(width)
  33.     aTurtle.right( 90)
  34.     aTurtle.fd(height)
  35.     aTurtle.right( 90)
  36.     aTurtle.end_fill()
  37.     draw_crossshaped(aTurtle, width= 80, height= 80, color= 'white')
  38.     window.exitonclick()

实现效果如下:

星条旗

星条旗是美国的国旗,由两部分组成,旗的左上方蓝底上排列着 50 颗白色的星,其余部分是 13 道红白相间的条子,实现代码如下:


   
  1. # 画条纹
  2. def drawSquar():
  3.     turtle.color( 'black''red')
  4.     turtle.begin_fill()
  5.      for i in  range( 7):
  6.         turtle.forward( 600)
  7.         turtle.left( 90)
  8.         turtle.forward( 350 /  13)
  9.         turtle.left( 90)
  10.         turtle.forward( 600)
  11.         turtle.right( 90)
  12.         turtle.forward( 350 /  13)
  13.         turtle.right( 90)
  14.     turtle.end_fill()
  15. # 画左上角的小矩形
  16. def drawSmallsqure():
  17.     turtle.color( 'blue')
  18.     turtle.begin_fill()
  19.     turtle.left( 90)
  20.     turtle.forward( 350 /  2)
  21.     turtle.left( 90)
  22.     turtle.forward( 300)
  23.     turtle.left( 90)
  24.     turtle.forward( 350 *  7 /  13)
  25.     turtle.left( 90)
  26.     turtle.forward( 300)
  27.     turtle.end_fill()
  28. # 画左上角的星星
  29. def drawSrarts():
  30.     x =  -10
  31.     y =  0
  32.      for k in  range( 4):
  33.         x =  -15
  34.          for i in  range( 6):
  35.             turtle. goto(x, y)
  36.             turtle.color( 'white')
  37.             turtle.begin_fill()
  38.              for j in  range( 5):
  39.                 turtle.left( 144)
  40.                 turtle.forward( 20)
  41.             x -=  50
  42.             turtle.end_fill()
  43.         y +=  350 /  13 *  2
  44.     x =  -10
  45.     y =  350 /  13
  46.      for i in  range( 3):
  47.         x =  -35
  48.          for j in  range( 5):
  49.             turtle. goto(x, y)
  50.             turtle.color( 'white')
  51.             turtle.begin_fill()
  52.              for k in  range( 5):
  53.                 turtle.left( 144)
  54.                 turtle.forward( 20)
  55.             x -=  50
  56.             turtle.end_fill()
  57.         y +=  350 /  13 *  2
  58. turtle.setup( 0.80.8-100-100)
  59. turtle.speed( 10)
  60. turtle.pu()
  61. turtle.forward( 300)
  62. turtle.left( 90)
  63. turtle.forward( 350 /  2)
  64. turtle.left( 90)
  65. drawSquar()
  66. turtle.home()
  67. drawSmallsqure()
  68. turtle.home()
  69. drawSrarts()
  70. turtle.hideturtle()
  71. turtle.done()

实现效果如下:

一点红旗

一点红旗是日本的国旗,构成比较简单,就是在长方形白底中点一个大红点,实现代码如下:


   
  1. turtle.setup(width= 600, height= 400)
  2. # 设置画笔起点
  3. turtle.penup()
  4. turtle. goto( 0-50)
  5. turtle.pendown()
  6. # 设置画笔属性
  7. turtle.pensize( 5)
  8. turtle.pencolor( "red")
  9. turtle.fillcolor( "red")
  10. # 绘制速度
  11. turtle.speed( 10)
  12. turtle.begin_fill()
  13. turtle.circle( 50)
  14. turtle.end_fill()
  15. turtle.hideturtle()
  16. turtle.mainloop()

实现效果如下:

总结

本文我们使用 Python 绘制了几面国旗,有兴趣的可以尝试绘制一下其他国家的国旗。

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式

识别文末二维码,回复:210130


转载:https://blog.csdn.net/weixin_48923393/article/details/113449527
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场