效果如下,核心是递归思想
其实代码很短,关键是理解koch函数的else部分出现的递归
要看懂代码,你还需要理解turtle库的函数,如果不理解,可以参考这篇文章
https://blog.csdn.net/qq_37465638/article/details/86674346
# 雪花
import turtle as a
def koch(size, n):
# 只有当阶数是0时,往走一段
if (n == 0):
a.fd(size)
else:
# 将一条线分成四段,这里设置每段之间需要的转向
for angle in [0, 60, -120, 60]:
a.right(angle)
# 转向之后进入了下一阶的段,递归,这里一定到想清楚!
koch(size / 3, n - 1)
if __name__ == '__main__':
a.setup(650, 300, 200, 200)
# 将画笔左移一点
a.penup()
a.goto(-100, 0)
a.pendown()
# 设置画雪花的阶数,阶数越多,雪花细节越丰富,但画得也越慢
level = 2
size = 100
a.hideturtle() # 隐藏画笔
# 每次画雪花的1/3,左转120
for i in range(3):
koch(size, level)
a.left(120)
a.done()
调整每条线的偏转角度和总的偏转角度,可以获得不同的图形,是不是很有趣!