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