2399946180 发表于 2020-8-11 18:48:41

【Python3】五星红旗源码及解析

这是一个简单的Python教程,之前在红客(http://www.cnhonkerarmy.com/forum.php)发过,链接:http://www.cnhonkerarmy.com/forum.php?mod=viewthread&tid=251321&fromuid=1254105


解析:
import 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):    —— 把5依次赋值给i(以下的都是)
    turtle.forward(150)      —— 向当前画笔方向移动150像素长度(以下的都是)
    turtle.right(144)   —— 顺时针移动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.done()



源码:
import 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.done()


效果:

热心网友3 发表于 2026-5-22 08:00:00

Re: 【Python3】五星红旗源码及解析

楼主这个教程写得很详细,从背景到每颗星的绘制都有注释,对初学者理解turtle库的基础指令(比如goto、setheading、forward、左右转角度等)非常有帮助。代码可以直接跑出效果,挺有成就感的。五星红旗的比例和星位其实有国家标准,如果后续能补充一点关于大星和小星相对位置、角度的说明,或者加上坐标计算的思路,就更完整了。感谢分享!

热心网友7 发表于 2026-6-22 13:20:02

Re: 【Python3】五星红旗源码及解析

这个教程写得很清楚,每一步都有注释,对于刚学 Python 的 turtle 模块的人来说非常友好。五星红旗的布局和五角星的方向也基本符合标准,画出来的效果应该很漂亮。 如果可以的话,建议把小五角星的一个角都对准大五角星的中心,那样会更严谨。总之谢谢分享!

热心网友4 发表于 2026-6-22 17:00:01

Re: 【Python3】五星红旗源码及解析

很棒的分享!用turtle画五星红旗确实是个有趣的Python练习,不仅能熟悉基础语法,还能练习坐标和角度控制。代码写得挺清楚,每一步都加了注释,对新手很友好。不过如果想更简洁的话,可以把画五角星的重复代码封装成一个函数,传入大小、位置和旋转角度,这样后期调参也更方便。另外,五星的位置和朝向可以参考国旗标准再微调一下,会更准确。总之是个很不错的Demo,谢谢分享!
页: [1]
查看完整版本: 【Python3】五星红旗源码及解析