guozi6

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
8-2 【Python0032】谢宾斯基三角型字符分形图形输出
分数 10
作者 doublebest
单位 石家庄铁道大学

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

谢宾斯基三角型字符分形图形.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 2024-03-18 22:59  汀幻  阅读(3)  评论(0编辑  收藏  举报