实验2:turtle库绘制进阶图形(2学时)
知识点:turtle库坐标控制、循环结构、函数封装(教材2.3-2.4)
实验任务
1.绘制嵌套彩色五角星(大小逐层递减)
2.设计函数绘制自定义正多边形(边数与颜色参数化)
3.扩展:实现动态旋转花瓣图案。
代码:
import turtle
# 1. 绘制嵌套彩色五角星(大小逐层递减)
screen = turtle.Screen()
pen = turtle.Turtle()
pen.speed(0)
sizes = [100, 80, 60, 40, 20]
colors = ['red', 'orange', 'yellow', 'green', 'blue']
for i in range(len(sizes)):
pen.color(colors[i])
pen.penup()
pen.goto(0, -sizes[i] // 2)
pen.pendown()
for _ in range(5):
pen.forward(sizes[i])
pen.right(144)
# 等待 8 秒后清除屏幕
screen.ontimer(pen.reset, 8000)
# 2. 绘制自定义正多边形(边数与颜色参数化)
def draw_polygon():
pen.speed(0)
sides = 6
color = 'purple'
angle = 360 / sides
pen.color(color)
for _ in range(sides):
pen.forward(100)
pen.right(angle)
# 等待 8 秒后清除屏幕
screen.ontimer(pen.reset, 8000)
# 等待 8 秒后绘制花瓣
screen.ontimer(draw_petals, 8000)
# 3. 实现动态旋转花瓣图案
def draw_petals():
pen.speed(0)
num_petals = 10
# 只绘制一次花瓣
for i in range(num_petals):
pen.color('pink')
pen.begin_fill()
pen.circle(50, 60)
pen.left(120)
pen.circle(50, 60)
pen.end_fill()
pen.left(360 / num_petals)
angle_increment = 1 # 每次旋转的角度
total_rotation = 360 # 总共旋转的角度
def rotate_petals():
nonlocal total_rotation
if total_rotation > 0:
pen.left(angle_increment)
screen.update()
total_rotation -= angle_increment
screen.ontimer(rotate_petals, 20) # 控制旋转速度
else:
# 旋转结束后等待 8 秒退出
screen.ontimer(screen.bye, 8000)
rotate_petals()
# 等待 8 秒后绘制正多边形
screen.ontimer(draw_polygon, 8000)
screen.mainloop()
结果截图:



314

被折叠的 条评论
为什么被折叠?



