Python实验2:turtle 库绘制进阶图形
知识点:turtle 库坐标控制、循环结构、函数封装(教材 2.3-2.4)
实验任务
1.绘制嵌套彩色五角星(大小逐层递减)
点击查看代码
import turtle
# 绘制一个五角星函数
def draw_star(center, size, color):
turtle.penup()
turtle.goto(center)
turtle.pendown()
turtle.color(color)
turtle.begin_fill()
for _ in range(5):
turtle.forward(size)
turtle.right(144)
turtle.end_fill()
# 绘制嵌套的彩色五角星函数
def draw_nested_stars(num_stars, initial_size, colors):
size = initial_size
center = (0, size/2) #初始中心位置
for i in range(num_stars):
draw_star(center, size, colors[i % len(colors)])
size *= 0.8 #每次递减
center = (0, initial_size/2) #保持嵌套,不更新中心位置
turtle.speed(0) # 设置最快速度
turtle.hideturtle()
colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]
# 绘制嵌套五角星
draw_nested_stars(5, 100, colors)
turtle.done()

2.设计函数绘制自定义正多边形(边数与颜色参数化)
点击查看代码
import turtle
def draw_polygon(sides, size, color):
turtle.fillcolor(color)
turtle.begin_fill()
for _ in range(sides):
turtle.forward(size)
turtle.right(360 / sides)
turtle.end_fill()
# 设置画布大小
screen = turtle.Screen()
screen.setup(width=800, height=600)
# 移动到画布中心(0,0)
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()
# 绘制正多边形(2个+)
draw_polygon(8, 100, "cyan")
turtle.penup()
turtle.goto(-200, 0)
turtle.pendown()
draw_polygon(10, 60, "magenta")
turtle.hideturtle()
turtle.done()

3.扩展:实现动态旋转花瓣图案。
点击查看代码
import turtle
import time
#绘制单个花瓣函数
def draw_petal(size, color):
turtle.color(color)
turtle.begin_fill()
turtle.circle(size, 60)
turtle.left(120)
turtle.circle(size, 60)
turtle.left(120)
turtle.end_fill()
#绘制花朵,包括颜色、旋转效果
def rotating_flowers(petals=6, size=100, rotations=5, speed=8):
# 参数:petals: 花瓣数量 size: 花瓣大小 rotations: 旋转圈数 speed: 旋转速度
screen = turtle.Screen()
screen.tracer(0) # 关闭自动刷新
colors = ['yellow', 'green', 'blue', 'purple', 'pink', 'cyan','red', 'orange']
turtle.speed(0)
turtle.width(2)
for _ in range(rotations * 360 // speed):
turtle.clear()
# 绘制花瓣
for i in range(petals):
draw_petal(size, colors[i % len(colors)])
turtle.right(360 / petals)
# 旋转整个图案
turtle.right(speed)
screen.update() # 手动刷新画面
time.sleep(0.2)
screen.tracer(1) # 恢复自动刷新
rotating_flowers(petals=16, size=80, rotations=3, speed=2)
turtle.done()

浙公网安备 33010602011771号