云天 发表于 2021-5-2 16:28:44

Python编程入门系列课程——02课后练习(国旗的正确画法)

本帖最后由 云天 于 2021-5-2 16:29 编辑

【图旗制法说明】(1949年9月28日中国人民政治协商会议第一届全体会议主席团公布)
国旗的形状、颜色两面相同,旗上五星两面相对。为便利计,本件仅以旗杆在左之一面为说明之标准。对于旗杆在右之一面,凡本件所称左均应改右,所称右均应改左。(一)旗面为红色,长方形,其长与高为三与二之比,旗面左上方缀黄色五角星五颗。一星较大,其外接圆直径为旗高十分之三,居左;四星较小,其外接圆直径为旗高十分之一,环拱于大星之右。旗杆套为白色。(二)五星之位置与画法如下:甲、为便于确定五星之位置,先将旗面对分为四个相等的长方形,将左上方之长方形上下划为十等分,左右划为十五等分。乙、大五角星的中心点,在该长方形上五下五、左五右十之处。其画法为:以此点为圆心,以三等分为半径作一圆。在此圆周上,定出五个等距离的点,其一点须位于圆之正上方。然后将此五点中各相隔的两点相联,使各成一直线。此五直线所构成之外轮廓线,即为所需之大五角星。五角星之一个角尖正向上方。丙、四颗小五角星的中心点,第一点在该长方形上二下八、左十右五之处,第二点在上四下六、左十二右三之处,第三点在上七下三、左十二右三之处,第四点在上九下一、左十右五之处。其画法为:以以上四点为圆心,各以一等分为半径,分别作四个圆。在每个圆上各定出五个等距离的点,其中均须各有一点位于大五角星中心点与以上四个圆心的各联结线上。然后用构成大五角星的同样方法,构成小五角星。此四颗小五角星均各有一个角尖正对大五角星的中心点。(三)国旗之通用尺度定为如下五种,各界酌情选用:甲、长288公分,高192公分。乙、长240公分,高160公分。丙、长192公分,高128公分。丁、长144公分,高96公分。戊、长96公分,高64公分。【程序代码】

import turtle

turtle.bgcolor("red")
turtle.fillcolor("yellow")
turtle.color('yellow')
turtle.speed(10)
#主星
turtle.begin_fill()
turtle.up()
turtle.goto(-600,220)
turtle.down()
for i in range (5):   
    turtle.forward(150)
    turtle.right(144)
turtle.end_fill()

#第1颗副星
turtle.begin_fill()
turtle.up()
turtle.goto(-400,295)
turtle.setheading(305)
turtle.down()
for i in range (5):   
    turtle.forward(50)
    turtle.left(144)

turtle.end_fill()


#第2颗副星
turtle.begin_fill()
turtle.up()
turtle.goto(-350,212)
turtle.setheading(30)
turtle.down()
for i in range (5):
    turtle.forward(50)
    turtle.right(144)

turtle.end_fill()

#第3颗副星
turtle.begin_fill()
turtle.up()
turtle.goto(-350,145)
turtle.setheading(5)
turtle.down()
for i in range (5):   
    turtle.forward(50)
    turtle.right(144)

turtle.end_fill()

#第4颗副星
turtle.begin_fill()
turtle.up()
turtle.goto(-400,90)
turtle.setheading(300)
turtle.down()
for i in range (5):
    turtle.forward(50)
    turtle.left(144)

turtle.end_fill()
turtle.done()
【绘制国旗】



【教程中的程序】
教程中“附录2国旗示例程序”,程序中没有画第四个小星。
import turtle
#中国国旗
turtle.penup()#提笔
turtle.goto(-200,200)#落到指定坐标位置
turtle.pendown()#落笔
turtle.begin_fill()
turtle.fillcolor("red")
turtle.pencolor("red")
for i in range(2):#绘制长国旗边框轮廓
    turtle.forward(438)
    turtle.right(90)
    turtle.forward(292)
    turtle.right(90)
turtle.end_fill()
turtle.penup()#绘制大的五角星
turtle.goto(-170,145)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(50)
    turtle.right(144)
turtle.end_fill()
#绘制第一颗小的五角星
turtle.penup()
turtle.goto(-100,180)
turtle.setheading(305)#设置当前朝向为305°
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(20)
    turtle.left(144)
turtle.end_fill()
#绘制第二颗小的五角星
turtle.penup()
turtle.goto(-85,150)
turtle.setheading(30)#设置当前朝向为30°
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(20)
    turtle.right(144)
turtle.end_fill()
#绘制第三颗小的五角星
turtle.penup()
turtle.goto(-85,120)
turtle.setheading(5)#设置当前朝向为5°
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(20)
    turtle.right(144)
turtle.end_fill()
#绘制第四颗小的五角星
turtle.penup()
turtle.goto(-100,100)
turtle.setheading(300)#设置当前朝向为300°完整代码为:
import turtle
#中国国旗
turtle.penup()#提笔
turtle.goto(-200,200)#落到指定坐标位置
turtle.pendown()#落笔
turtle.begin_fill()
turtle.fillcolor("red")
turtle.pencolor("red")
for i in range(2):#绘制长国旗边框轮廓
    turtle.forward(438)
    turtle.right(90)
    turtle.forward(292)
    turtle.right(90)
turtle.end_fill()
turtle.penup()#绘制大的五角星
turtle.goto(-170,145)
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(50)
    turtle.right(144)
turtle.end_fill()
#绘制第一颗小的五角星
turtle.penup()
turtle.goto(-100,180)
turtle.setheading(305)#设置当前朝向为305°
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(20)
    turtle.left(144)
turtle.end_fill()
#绘制第二颗小的五角星
turtle.penup()
turtle.goto(-85,150)
turtle.setheading(30)#设置当前朝向为30°
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(20)
    turtle.right(144)
turtle.end_fill()
#绘制第三颗小的五角星
turtle.penup()
turtle.goto(-85,120)
turtle.setheading(5)#设置当前朝向为5°
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(20)
    turtle.right(144)
turtle.end_fill()
#绘制第四颗小的五角星
turtle.penup()
turtle.goto(-100,100)
turtle.setheading(300)#设置当前朝向为300°
turtle.pendown()
turtle.begin_fill()
turtle.fillcolor("yellow")
turtle.pencolor("yellow")
for x in range(5):#绘制五角星轮廓
    turtle.forward(20)
    turtle.right(144)
turtle.end_fill()
turtle.hideturtle()
turtle.done()
页: [1]
查看完整版本: Python编程入门系列课程——02课后练习(国旗的正确画法)