说明
这是Python100天的第一天的练手项目,旨在让大家快速入门,以及增加大家学习的乐趣,而不是一味地学习枯燥的语法。
IDE当然首选pycharm,但是已经安装了idea或者vscode,装个py插件也很不错。使用的sdk为py3,注意py3并不兼容py2。
使用Python来画国旗,首先来了解一下关于国旗的知识
国旗
*国旗是五星红旗 [1] ,为*的象征和标志 [2] 。*国旗的设计者是曾联松(曾任上海市政协常委) ,旗面为红色,长方形,其长与高为三与二之比,旗面左上方缀黄色五角星五颗。一星较大,其外接圆直径为旗高十分之三,居左;四星较小,其外接圆直径为旗高十分之一,环拱于大星之右。
五星之位置与画法如下:
- 为便于确定五星之位置,先将旗面对分为四个相等的长方形,将左上方之长方形上下划为十等分,左右划为十五等分。
- 大五角星的中心点,在该长方形上五下五、左五右十之处。其画法为:以此点为圆心,以三等分为半径作一圆。在此圆周上,定出五个等距离的点,其一点须位于圆之正上方。然后将此五点中各相隔的两点相联,使各成一直线。此五直线所构成之外轮廓线,即为所需之大五角星。五角星之一个角尖正向上方。
- 四颗小五角星的中心点,第一点在该长方形上二下八、左十右五之处,第二点在上四下六、左十二右三之处,第三点在上七下三、左十二右三之处,第四点在上九下一、左十右五之处。其画法为:以以上四点为圆心,各以一等分为半径,分别作四个圆。在每个圆上各定出五个等距离的点,其中均须各有一点位于大五角星中心点与以上四个圆心的各联结线上。然后用构成大五角星的同样方法,构成小五角星。此四颗小五角星均各有一个角尖正对大五角星的中心点。
图例说明:
(以上内容来源于度娘)
实现思路
从资料来看,我们知道了宽:高=3:2,大五角星半径:小五角星半径=3:1,如果宽度=300,那么高度=200
以矩形中心点建立坐标系,根据计算,大五角星的外接圆圆心坐标为(-100,50),半径r1=30,小五角星的外接圆圆心坐标为(-50,80),(-30,60),(-30,40),(-50,10),半径r2=10
五角星的画法:确定5个角的顶点1,2,3,4,5后,依次连线1--3--5--2--4--1,每个夹角6为72°
代码实现
flag.py
先搭建整体框架,使用了一个画图工具turtle小海龟,注意py是解释型语言,运行的时候是从上往下运行的,所以在main方法调用的方法必须写在main方法的上面
import turtle
def draw_rectangle(pos_x, pos_y, width, height):
"""画矩形"""
pass
def draw_star(pos_x, pos_y, radium):
"""画五角星"""
pass
def main():
"""主程序"""
# TODO 画矩形
pos_x, pos_y = 0, 0
width, height = 300, 200
draw_rectangle(pos_x, pos_y, width, height)
# TODO 画大五角星
pos_x, pos_y = -100, 50
radium = 30
draw_star(pos_x, pos_y, radium)
# TODO 画小五角星
radium = 10
pos_x, pos_y = -50, 80
draw_star(pos_x, pos_y, radium)
pos_x, pos_y = -30, 60
draw_star(pos_x, pos_y, radium)
pos_x, pos_y = -30, 70
draw_star(pos_x, pos_y, radium)
pos_x, pos_y = -50, 10
draw_star(pos_x, pos_y, radium)
if __name__ == '__main__':
main()