零基础学编程014:小海龟做画

在《零基础学编程012:画出复利曲线图》这篇文章中,我们使用了强大的matplotlib和numpy模块,可以用几行代码画出复杂的图形来。但对于初学者来说,里面的语句理解起来还是非常有难度。既然是零基础,可以看看很久以前孩子们是如何开始学编程的。

1967年,Daniel G. Bobrow, Wally Feurzeig, Seymour PapertCynthia Solomon设计了LOGO编程语言,用一种直观的方式教孩子们学习编程。尽管该语言也可以解决复杂问题,但给大家留下最深刻印象的是它里面的海龟绘图系统(Turtle Graphics)。

通过向海龟(turtle)发送命令,用户可以直观地学习程序的运行过程,因此它很适合于儿童学习,当然也可以用于几何教学。我以前就在一些学习机上运行过LOGO环境,还带着自己的孩子在上面做画,估计她现在早就忘了这段故事了。

强大的Python语言肯定也不会遗忘小海龟,在Python环境中已经内置好了turtle模块,你只需要在Python IDLE中输入2行语句,就可以让小海龟就位。

import turtle
turtle.reset()

这时屏幕上会弹出一个图形窗口,那个朝向右方的小箭头就代表小海龟。

现在试着给小海龟发送命令,forward(100)表示向前方走100步,计算机上1步就是1个像素,left(90)表示向左转90度。

咱们来个郭冬临在小品《问路》中的“左转左转左转左转,好像是一个圈呦”:

turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)

当然画出来的是一个正方形。

我们已经在《零基础学编程007:FOR循环》里学过了循环语句,可以把代码简化为重复4次的前进和左转,效果一样:

for i in range(4) :
    turtle.forward(100)
    turtle.left(90)

这些指令虽然简单,但你可别小瞧它,一段计算机程序也就是顺序条件循环这三种程序结构。如果再运用上递归算法,能够产生许多奇妙的图案。试着复制并粘贴这段代码到Python IDLE中,看看它能画出什么图形?

from turtle import *

def f(length, depth):
   if depth == 0:
     forward(length)
   else:
     f(length/3, depth-1)
     right(60)
     f(length/3, depth-1)
     left(120)
     f(length/3, depth-1)
     right(60)
     f(length/3, depth-1)

f(500, 4)

在Python3中,turtle能够执行许多命令,点击“阅读原文”可以看到这些命令的帮助文档。

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-01-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙回顾|UI自动化——adbui的使用及实现

1285
来自专栏极客编程

VueJS && ReactJS 如何?听听别人怎么说

使用所有新的库和框架,很难跟上所有这些库和框架,也就是说,这就需要您决定哪些是值得花时间的。

765
来自专栏PPV课数据科学社区

最让程序员感到崩溃的10种编程语言

很显然,软件开发领域中的程序员对编程语言最有发言权。一种语言可能是一些程序员的最爱,但它同时也是另一些程序员的噩梦。如果你在编程领域呆了一段时 间,你就迟早会发...

3605
来自专栏FreeBuf

如何从新闻中识别骗子们的小套路

电信诈骗猖獗盛行,成为国家的重点打击对象,但是我们身边亲朋好友被骗的悲剧还在屡屡发生。小作者思考也许我们可以从新闻中提取电信诈骗的特征信息,为家里的长辈亲人提个...

17310
来自专栏老九学堂

点击续命|程序员如何有效处理bug?

测试员因bug而生 程序员因bug狗带 在程序员的职业生涯中,免不了要跟bug一直打交道 Bug也是程序员进阶的磨刀石 当然,bug还更大部分程序员的噩梦啊 ?...

3515
来自专栏小狼的世界

BLOG首页展示的几种方式

大约在多年以前,按照日志的时间格式进行排列的类似于编年史样的风格非常流行,但是最近,摘要形式的首页展示开始变得流行起来,还有一些其他的展现形式,我们的Blogg...

411
来自专栏企鹅号快讯

web前端工程师入门须知,你全部了解吗?

划重点 一名合格的web前端工程师必须得掌握HTML、CSS和JavaScript。只懂其中一个或两个还不行,你必须对这三门语言都很熟悉。也不是说必须对这三门语...

36111
来自专栏PPV课数据科学社区

亮了!用Excel画出一目了然的数据地图

我在专栏(钱粮胡同 28 号)里写了一篇文章: 用 Excel 做出强大漂亮的数据地图 - 钱粮胡同 28 号 放在这里分享给大家。 这个方法的好处是:1)不...

4258
来自专栏GopherCoder

『Go 语言实现简易爬虫:市值前100数字货币交易信息』

1704
来自专栏葡萄城控件技术团队

作为开发人员,这四类Code Review方法你都知道吗?

没有人能保证他产出的代码一定是完美的。下文阐述了4种主流的代码审查(code review)类型,相信作为专业的开发人员,你应该都了解它们!

521

扫描关注云+社区