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()

posted on 2025-04-18 10:52  encore弥塔  阅读(96)  评论(0)    收藏  举报