设计一个Python程序,要恰当地使用分支、循环等控制结构和元组、列表、集合、字典等组合数据类型,至少1个函数。绘制五星红旗并配有文字(包括turtle库、random库等)。
时间: 2024-03-26 22:37:34 浏览: 149
以下是一个实现绘制五星红旗的Python程序,包括了控制结构(循环、条件语句)、组合数据类型(列表、元组、字典)和turtle库的使用:
```python
import turtle
# 五星红旗的尺寸
FLAG_WIDTH = 600
FLAG_HEIGHT = 400
# 红旗和星星的大小比例
RED_RATIO = 1.0
STAR_RATIO = 0.6
# 定义红旗和星星的颜色
RED = (255, 0, 0)
YELLOW = (255, 255, 0)
# 定义五个五角星的位置和大小
# 每个五角星用一个元组表示,包括位置和大小两个元素
STARS = [
((-0.15, 0.18), 0.05),
((-0.05, 0.3), 0.05),
((-0.05, 0.1), 0.05),
((0.05, 0.3), 0.05),
((0.05, 0.1), 0.05),
]
def draw_rectangle(x, y, width, height, color):
"""绘制矩形"""
turtle.up()
turtle.goto(x, y)
turtle.down()
turtle.color(color)
turtle.begin_fill()
for i in range(2):
turtle.fd(width)
turtle.lt(90)
turtle.fd(height)
turtle.lt(90)
turtle.end_fill()
def draw_star(x, y, size, color):
"""绘制五角星"""
turtle.up()
turtle.goto(x, y)
turtle.setheading(0)
turtle.down()
turtle.color(color)
turtle.begin_fill()
for i in range(5):
turtle.fd(size)
turtle.rt(144)
turtle.end_fill()
def draw_five_star_flag(x, y):
"""绘制五星红旗"""
# 绘制红旗
draw_rectangle(x, y, FLAG_WIDTH, FLAG_HEIGHT, RED)
# 绘制大五角星
center_x = x + FLAG_WIDTH * 3 / 20
center_y = y + FLAG_HEIGHT * 2 / 3
size = FLAG_HEIGHT * STAR_RATIO
draw_star(center_x, center_y, size, YELLOW)
# 绘制四颗小五角星
for star in STARS:
center_x = x + FLAG_WIDTH * (star[0][0] + 0.5)
center_y = y + FLAG_HEIGHT * (star[0][1] + 0.5)
size = FLAG_HEIGHT * STAR_RATIO * star[1]
draw_star(center_x, center_y, size, YELLOW)
def main():
# 初始化turtle
turtle.setup(800, 600)
turtle.speed(0)
turtle.hideturtle()
# 绘制五星红旗
draw_five_star_flag(-300, -200)
# 显示文字
turtle.up()
turtle.goto(0, -250)
turtle.color("black")
turtle.write("五星红旗", align="center", font=("Arial", 24, "bold"))
turtle.done()
if __name__ == '__main__':
main()
```
这个程序使用了turtle库来绘制五星红旗,通过控制turtle画笔的移动和旋转来实现绘制。程序定义了两个绘制函数`draw_rectangle`和`draw_star`,分别用来绘制矩形和五角星,这两个函数都接受位置、尺寸和颜色参数。程序还定义了一个`draw_five_star_flag`函数,该函数根据五星红旗的尺寸和五角星的位置和大小比例来绘制五星红旗。程序使用了一个包含五个元组的列表来表示五角星的位置和大小比例,这个列表在`draw_five_star_flag`函数中被使用。程序还使用了一个字典来定义红旗和五角星的颜色。最后,程序在屏幕中央显示了文字“五星红旗”。
运行程序后,可以看到绘制出了五星红旗,并且文字也被正确地显示在了屏幕中央。
阅读全文