5.10

要求编程输出如下图示的字符分形图形(谢宾斯基三角形),要求提交源代码文件,其中源代码要求逐行注释。

谢宾斯基三角型字符分形图形.jpg
复制代码
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-06-06 22:07  chrisrmas、  阅读(2)  评论(0编辑  收藏  举报