1 问题描述
按照要求使用turtle库画出图形
*国旗是五星红旗,为左上角镶有五颗黄色五角星的红色旗帜,旗帜图案中的四颗小五角星围绕在一颗大五角星右侧呈半环形。红色的旗面象征革命,五颗五角星及其相互联系象征着中国***下中国人民的团结。该旗的设计者是曾联松,是一名来自浙江瑞安的普通工人。
2 解题思路
为便于确定五星之位置,先将旗面对分为四个相等的长方形,将左上方之长方形上下划为十等分,左右划为十五等分。
大五角星的中心点,在该长方形上五下五、左五右十之处。其画法为:以此点为圆心,以三等分为半径作一圆。在此圆周上,定出五个等距离的点,其一点须位于圆之正上方。然后将此五点中各相隔的两点相联,使各成一直线。此五直线所构成之外轮廓线,即为所需之大五角星。五角星之一个角尖正向
四颗小五角星的中心点,第一点在该长方形上二下八、左十右五之处,第二点在上四下六、左十二右三之处,第三点在上七下三、左十二右三之处,第四点在上九下一、左十右五之处。其画法为:以以上四点为圆心,各以一等分为半径,分别作四个圆。
如下图所示
3 解题方法
画国旗
import turtle as t t.penup() t.goto(-330,220) t.pendown() a=1 t.fillcolor('red') t.color('red') t.begin_fill() while a<=4: if a%2==1: t.fd(660) else: t.fd(440) t.rt(90) a+=1 t.end_fill() #画五角星 t.penup() t.goto(-286,132) b=1 t.fillcolor('yellow') t.color('yellow') t.begin_fill() while b<=5: t.fd(132) t.right(144) b+=1 t.end_fill() t.penup() t.goto(-88,176) b=1 t.fillcolor('yellow') t.begin_fill() t.right(156) while b<=5: t.fd(44) t.right(144) b+=1 t.end_fill() t.penup() t.goto(-88,132) b=1 t.fillcolor('yellow') t.begin_fill() t.right(180) while b<=5: t.fd(44) t.right(144) b+=1 t.end_fill() t.penup() t.goto(-66,88) b=1 t.fillcolor('yellow') t.begin_fill() t.right(90) while b<=5: t.fd(44) t.right(144) b+=1 t.end_fill() t.penup() t.goto(-88,22) b=1 t.fillcolor('yellow') t.begin_fill() t.right(90) while b<=5: t.fd(44) t.right(144) b+=1 t.end_fill() t.penup() t.goto(500,0) t.done()View Code
第1行: 引入turtle画图库并简化为t来表示
第3-17行: 画出660×440的长方形作为并填充红色作为国旗总体样式
第19-29行: 找准第一个五角星坐标并画图且填充黄色
第31-41行: 找准第二个五角星坐标并画图且填充黄色
第43-53行: 找准第三个五角星坐标并画图且填充黄色
第55-65行: 找准第四个五角星坐标并画图且填充黄色
第67-77行: 找准第五个五角星坐标并画图且填充黄色
第79-81行: 将画笔移出国旗外并开始作图
代码运行结果为:
这里用到了turtle.circle函数,简单讲解下这个函数:
turtle.circle()函数
语法:
turtle.circle(radius, extent=None, steps=None)
参数说明:
radius(半径):半径为正(负),表示圆心在画笔的左边(右边)画圆;
extent(弧度) (optional);
steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)。 第24期-画图形 (opens new window)中我们同样讲解了用turtle库方法来画五角星以及长方形,忘记了的小伙伴可以查看哦~