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

谢宾斯基三角型字符分形图形.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 on   po3a  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
 
点击右上角即可分享
微信分享提示