代码如下,核心是递归思想(主要理解koch函数的else部分出现的递归)
# 雪花
from turtle import *
# 画科赫曲线函数
def koch(size, n): # 只有当阶数为0时,往前走一段
if n == 0:
fd(size)
else:
# 将一条线分成四段,这里设置每段之间需要的转向
for angle in [0, 60, -120, 60]:
left(angle)
# 转向之后进入了下一阶段,递归,这里一定要想清楚!
koch(size / 3, n - 1)
画3阶科赫雪花主体函数,代码如下
if __name__ == '__main__': # 画3阶科赫雪花主体函数
setup(650, 300, 200, 200) # 将画笔左移一点
penup()
goto(-100, 0)
pendown()
# 设置画雪花的阶数,阶数越多,雪花细节越丰富,但画的也越慢
level = 2
size = 100
hideturtle() # 隐藏画笔
# 每次画雪花的1/3,做转120
for i in range(3):
koch(size, level)
left(120)
done()
调整每条线的偏转角度和总的偏转角度,可以获得不同的图形,是不是很有趣!