前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >零基础学编程014:小海龟做画

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

作者头像
申龙斌
发布2018-03-06 10:43:33
1.9K0
发布2018-03-06 10:43:33
举报

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

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

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

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

代码语言:javascript
复制
import turtle
turtle.reset()

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

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

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

代码语言:javascript
复制
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次的前进和左转,效果一样:

代码语言:javascript
复制
for i in range(4) :
    turtle.forward(100)
    turtle.left(90)

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

代码语言:javascript
复制
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 ---

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 申龙斌的程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档