猫史档案馆


【TCE的编程小讲堂】【Python】【第三期】如何画出科赫雪花?(下)

用户:Leo腾Leo腾查看:0 回复:2 评论:0 创建时间:2020-02-23T13:12:55


大家还记得上期讲的科赫雪花吗?我们上次讲过画出一条边的方法,大家看看代码复习一下

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()#如果你想锻炼你的眼力的话,这行代码可以省略

那么,我们应该如何做到输入层数,之后画出相应层数的科赫雪花呢?

没错,就是使用递归的方法

center_image

(图片来自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


回复

上一页1 页 / 共 1下一页
Aeth空Aeth空

密集恐惧

点赞0


评论


umbrallawwumbrallaww

挖。。

点赞0


评论