大家还记得上期讲的科赫雪花吗?我们上次讲过画出一条边的方法,大家看看代码复习一下
import turtle#包含turtle库
def koch(l):
turtle.forward(l / 4)#画出第一条边
turtle.left(60)#转向
turtle.forward(l / 4)#画出第二条边
turtle.right(120)#转向
turtle.forward(l / 4)#画出第三条边
turtle.left(60)#转向
turtle.forward(l / 4)#画出第四条边
turtle.up()
turtle.back(150)
turtle.down()
'''如果你不是强迫症的话,上面三行代码可以省略'''
koch(400)#参数表示大小
turtle.done()#如果你想锻炼你的眼力的话,这行代码可以省略
那么,我们应该如何做到输入层数,之后画出相应层数的科赫雪花呢?
没错,就是使用递归的方法科赫雪花
(图片来自https://www.sohu.com/a/292614238_358040)
观察上面这张图,大家有没有发现,一个n层的科赫雪花的一条边,都是一个n-1层的科赫曲线
也就是说,每递归一次,层数都减少1,最后就可以画出一个科赫雪花了
不多解释,上代码
import turtle#包含turtle库
def koch(l,n):
if (n == 0):#递归终止条件
turtle.forward(l)#画出最短的线
else:
koch(l / 3, n - 1)#画出第一条边
turtle.left(60)#旋转
koch(l / 3, n - 1)#画出第二条边
turtle.right(120)#旋转
koch(l / 3, n - 1)#画出第三条边
turtle.left(60)#旋转
koch(l / 3, n - 1)#画出第四条边
#开始进入Python的世界
turtle.pensize(1)#调整画笔的粗细
turtle.pencolor("#66cccc")#调整画笔的颜色
a = turtle.numinput('codemao', '你要画几层的科赫雪花?')#输入层数
turtle.penup()
turtle.goto((-100), 100)
turtle.pendown()
'''上面三行是强迫症专属代码'''
for i in range(3):
koch(200, a)#第一个参数是大小,第二个是层数
turtle.right(120)
'''画出三条边,每当画完一条后,旋转120度'''
turtle.done()#训练眼力的可以不要这行代码
好的,那么本次的教学就到这里结束了
(有一点少(shui)对吧)
如果想要看到其他内容,欢迎来论坛搜索【TCE的编程小讲堂】关键词找我哦!
本人是学生党,用休息时间赶出来的帖子,如果有不详细之处还望谅解
往期内容:
第一期:【TCE的编程小讲堂】【Python】【第一期】Pyautogui干货(上)
网址:https://shequ.codemao.cn/community/210335
第二期:【TCE的编程小讲堂】【Python】【第二期】如何画出科赫雪花?(上)
网址:https://shequ.codemao.cn/community/219991
(本文和我在编程猫发的帖子一模一样,所以有什么不合适的地方的话……我也懒得改)
(编程猫社区帖子地址:https://shequ.codemao.cn/community/249245)
(编程猫主页:https://shequ.codemao.cn/user/2236816)