2024/5/19

所花时间:1小时

代码行:70行

博客量:1篇

了解到的知识点:

import turtle

# 定义绘制谢宾斯基三角形的函数

def draw_sierpinski_triangle(t, order, size):

    # 递归结束条件:如果order为0,则绘制一个等边三角形

    if order == 0:

        for _ in range(3):

            t.forward(size)

            t.left(120)

    # 否则递归绘制三个更小的谢宾斯基三角形

    else:

        draw_sierpinski_triangle(t, order-1, size/2)  # 绘制左下角的小三角形

        t.forward(size/2)

        draw_sierpinski_triangle(t, order-1, size/2)  # 绘制上方的小三角形

        t.backward(size/2)

        t.left(60)

        t.forward(size/2)

        t.right(60)

        draw_sierpinski_triangle(t, order-1, size/2)  # 绘制右下角的小三角形

        t.left(60)

        t.backward(size/2)

        t.right(60)

def main():

    # 设置画布

    screen = turtle.Screen()

    screen.setup(width=800, height=800)

    screen.title("Sierpinski Triangle")

    # 创建画笔

    pen = turtle.Turtle()

    pen.speed(0)  # 设置绘制速度为最快

    # 接受用户输入,确保输入的层数在1到9之间

    while True:

        order = int(input("请输入谢宾斯基三角形的层数 (1-9):"))

        if 1 <= order <= 9:

            break

        else:

            print("输入错误,请输入1到9之间的数字!")

    # 移动画笔到初始位置

    pen.penup()

    # 修改初始位置为右下角

    pen.goto(20,200)

    pen.pendown()

    # 调整角度,使得谢宾斯基三角形朝上

    pen.right(120)  # 将角度调整为朝上

    # 绘制谢宾斯基三角形

    draw_sierpinski_triangle(pen, order, 600)

    # 隐藏画笔

    pen.hideturtle()

    # 显示绘制结果

    screen.mainloop()

if _name_ == "_main_":

    main()

posted @ 2024-05-19 21:28  为20岁努力  阅读(4)  评论(0编辑  收藏  举报