《教孩子学编程(Python语言版)》——第2章 海龟作图—用Python 绘图 2.1 第一个海龟程序

第2章 海龟作图—用Python 绘图

在本章中,我们将编写简短的、简单的程序来创建漂亮的、复杂的视觉效果。为了做到这一点,我们可以使用海龟作图软件。在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动。这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条。通过编写代码,以各种很酷的模式移动海龟,我们可以绘制出令人惊奇的图片。

使用海龟作图,我们不仅能够只用几行代码就创建出令人印象深刻的视觉效果,而且还可以跟随海龟看看每行代码如何影响到它的移动。这能够帮助我们理解代码的逻辑。

2.1 第一个海龟程序

让我们使用海龟作图来编写第一个程序。在一个新的IDLE窗口中输入如下的代码并将其保存为SquareSpiral1.py(你也可以通过http://www.nostarch. com/teachkids/下载该程序以及本书中的所有其他的程序)。

SquareSpiral1.py

# SquareSpiral1.py - Draws a square spiral
import turtle
t = turtle.Pen()
for x in range(100):
   t.forward(x)
   t.left(90)

当运行这段代码的时候,我们会得到一幅漂亮整齐的图片(如图2-1所示)。

2.1.1 程序是如何工作的

让我们一行一行地分析这个程序,看看它是如何工作的。SquareSpiral1.py的第1行是注释。正如我们在第1章中所学过的,注释以一个井号(#)开头。注释允许我们在程序中写入给自己或以后可能阅读该程序的其他人一些提示。计算机不会阅读或试图理解井号之后的任何内容;注释只是让我们写出关于程序是做什么的一些说明。在这个例子中,我们将程序的名称以及针对其做什么的一个简单说明放入到注释之中。

第2行导入(import)了绘制海龟图形的功能。导入已经编写过的代码,这是编程工作的最酷的事情之一。如果我们编写了一些有趣并有用的程序,可以将其与其他的人分享,同时也可以自己重用它。尽管海龟作图最初源自20世纪60年代的Logo编程语言[1],但一些很酷的Python程序员构建了一个库(library,库就是可以重用的代码的一个集合),来帮助其他程序员在Python中使用海龟作图。当我们输入了import turtle,就表示我们的程序能够使用那些Python程序员所编写的代码。图2-1中的小的黑色箭头表示海龟,它在屏幕上移动的时候会使用钢笔绘图。

程序的第3行是t = turtle.Pen(),它告诉计算机,我们将使用字母t表示海龟的钢笔。这使得我们只需要录入t.forward(),而不是turtle.Pen().forward(),就可以让海龟在屏幕上移动的时候用海龟的钢笔进行绘制。字母t是告诉海龟做什么的一种快捷方式。

第4行最为复杂。在这里,我们创建了一个循环(loop),它重复一组指令很多次(一次又一次地循环这些代码行)。这个特定的循环设置了一个范围(range,或列表),其中拥有从0~99的100个数字(计算机几乎总是从0开始计数,而不是像我们通常那样从1开始)。在该循环中,字母x遍历了范围中的每一个数字。因此,x从0开始,然后变为1,然后是2,依次类推,直到99,一共100个步骤。

x叫作变量(variable)[2](在第1章中的YourName.py程序中,name就是变量)。变量存储了在程序进行的过程中可以修改(变化)的一个值。我们在所编写的几乎每一个程序中,都要使用变量,因此,早点认识变量为好。

接下来的两行代码缩进了,或者说,在左边留出了空格。这意味着,它们位于该循环之中(in the loop)并且和上面的那一行代码一起,每次x从0~99的范围中获取一个新的数字的时候,这些代码行都会重复,直到达到100次。

2.1.2 发生了什么

让我们看看Python初次读取这一组指令的时候发生了什么。命令t.forward(x)让海龟的钢笔在屏幕上向前移动x个点。因为x是0,钢笔根本不会移动。最后一行代码t.left(90)让海龟向左转90°,或者说转四分之一个圈。

由于这个for循环,程序继续运行并且回到了循环的开始位置。计算机加1后将x移动到范围中的下一个值,因为1仍然位于从0~99的范围中,循环继续。现在x是1,因此,钢笔向前移动1个点。然后,钢笔向左移动90个点,因为代码是t.left(90)。这样一次一次地继续执行,当x到达99,即循环的最后一次迭代,钢笔围绕着正方形螺旋线的外围画了一条长长的线条。

下面我们随着x从0增加到100,将循环的每一步可视化地表示出来。

for x in range(100):
   t.forward(x)
   t.left(90)

计算机屏幕上的点或像素可能太小了,以至于我们无法很好地看到它们。但是,随着x变得越来越接近100,海龟绘制的线条包含了越来越多的像素。换句话说,当x变得越来越大,t.forward(x)绘制的线条越来越长。屏幕上的海龟箭头,绘制一会儿,然后向左转,再绘制一会儿,再向左转,这样一次又一次地绘制,每次线条都变得越来越长。

最后,我们有了一个炫目的正方形形状。连续4次向左转90°,就可以得到一个正方形,就像是围绕一栋建筑连续4次左转的话,将会带着我们绕建筑转一圈并且回到起点一样。

在这个示例中,我们之所以得到一个螺旋线,是因为每次左转的时候,都走得更远一点。绘制的第一个线条只是1步长(x = 1的时候),然后是2(循环的下一次迭代),然后是3,然后是4,以此类推,直到达到100步长,这时候,线条的长度为99像素。再一次强调下,屏幕上的像素可能太小了,以至于我们无法很容易地看到单个的点,但是,它们是存在的,而且我们会看到随着程序包含更多的像素,线条会变得越来越长。

通过完成所有的90°角的旋转,我们得到了完美的正方形。

时间: 2024-09-13 05:39:02

《教孩子学编程(Python语言版)》——第2章 海龟作图—用Python 绘图 2.1 第一个海龟程序的相关文章

《趣学JavaScript——教孩子学编程》——1.5 本章小结

1.5 本章小结 在本章中,我们了解了什么是JavaScript以及它可以用来干什么.你还学习了如何使用Google Chrome浏览器运行JavaScript,并且尝试了一个示例程序.本书中的所有代码示例,除非特别说明,都可以(并且应该)在Chrome的JavaScript控制台中使用.不要只是阅读代码,尝试输入一些内容.这是学习编程的唯一方法. 在下一章中,我们将学习JavaScript的基础知识,首先从你可以操作信息的3种基本类型开始:数字.字符串和Boolean.

《趣学JavaScript——教孩子学编程》——2.6 本章小结

2.6 本章小结 现在,我们已经知道JavaScript中所有的数据类型了--数字类型.字符串类型和布尔类型,还有特殊值null和undefined.数字类型用于处理与数学相关的事情,字符串类型用于处理文本,布尔类型用于表示答案为yes或no的问题.null和undefined是表示某些东西不存在的一种方法. 在接下来的两章中,我们会学习数组和对象,它们是连接基本类型以创建值较为复杂的集合的两种方法.

《趣学JavaScript——教孩子学编程》——导读

前言 趣学JavaScript--教孩子学编程 欢迎阅读本书!在本书中,你将学习用一种Web语言(JavaScript)来编写程序.但是更重要的是,你将成为一名程序员,即不仅会使用计算机而且会控制计算机的人.一旦学会了编程,你可以让计算机遵从你的意愿去做你想做的任何事情. JavaScript是一门不错的语言,值得学习,因为它随处可用.诸如Chrome.Firefox和Internet Explorer这样的Web浏览器,都使用JavaScript.借助JavaScript的强大功能,Web程序

《趣学JavaScript——教孩子学编程》——第1章 认识JavaScript1.1 认识JavaScript

第1章 认识JavaScript 趣学JavaScript--教孩子学编程 计算机是功能强大到令人难以置信的工具,它能够执行很多惊人的操作,例如,下国际象棋比赛.提供数以千计的Web页面,或者在数秒钟之内执行数百万次复杂的计算.但是,深入去看,计算机实际上是很傻的.计算机只能够执行人类告诉它的事情.我们使用计算机程序告诉计算机采取什么动作,而程序只是令计算机遵从的指令集合.没有程序的话,计算机什么也干不了. 1.1 认识JavaScript 更糟糕的是,计算机不能理解英语或任何人类语言.计算机程

《趣学JavaScript——教孩子学编程》——第2章 类型与变量2.1 数字和运算符

第2章 类型与变量 趣学JavaScript--教孩子学编程 编程其实就是操作数据,可什么是数据呢?数据就是我们保存在计算机程序中的信息.例如,你的名字就是一条数据,年龄也是一条数据.你头发的颜色,有几个兄弟姐妹,住在什么地方,是男生还是女生--所有这些都是数据. JavaScript中有3种基本的数据类型:数字.字符串和Boolean(布尔类型).number用来表示数字.例如,年龄可以用一个number表示,身高也可以用number表示.JavaScript中的数字如下所示: 字符串用来表示

《教孩子学编程(Python语言版)》——导读

前 言 什么是编程,为什么编程很适合孩子 计算机编程是每个孩子都应该学习的一项重要技能.我们使用计算机解决问题,玩游戏,帮助我们更有效地工作,执行重复性的任务,存储和查找信息,创建新的内容,同时与我们的朋友和世界联系.理解如何编写代码,将会把这一切力量付诸于我们的指尖. 每个人都能够学习编程,这就像是求解一个谜题或一个谜语.你可以应用逻辑,尝试一种解决方案,更多地试验一下,然后解决问题.开始学习编程的时机就是现在!我们处在一个前所未有的历史时期,在此之前,人们不可能像我们今天一样,通过计算机每天

《趣学Python——教孩子学编程》——导读

前 言 为什么要学习计算机编程 编程会培养创造能力.逻辑能力和解决问题的能力.编写程序的人有机会从无到有创造新事物,使用逻辑来把程序变成计算机可以运行的程序.在出了问题的时候你需要用解决问题的能力来找出是哪里不对.编程是一项既有趣,有时候又充满挑战的事情.从中学到的技巧对于学校和工作都很有用.就算你的职业方向和计算机没有关系也是这样. 除此之外,编程起码是外面天气不好的下午打发时间的好主意. 为什么是Python 对于初学者来讲,Python是一款既容易学又相当有用的编程语言.相对于其他语言,它

《教孩子学编程(Python语言版)》——第1章 Python 基础—认识环境 1.1 认识Python

第1章 Python 基础-认识环境 如今,几乎任何东西之中都有一个计算机,例如电话.汽车.手表.电子游戏机.跑步机.贺卡或者机器人.计算机编程或编码,就是要告诉计算机如何执行一项任务,因此,理解如何编写代码,可以将计算机的能力控制在你的指间. 计算机程序,也叫作应用程序(applications或App),它告诉计算机做什么.Web App可以告诉计算机如何记录你喜欢的音乐:游戏App告诉计算机如何用逼真的图像显示一个古代的战场:一个简单的App可以让计算机绘制出如图1-1所示的类似六边形的.

《教孩子学编程(Python语言版)》——2.3 海龟画圆

2.3 海龟画圆 说到几何,海龟作图可以绘制很多有趣的形状,而不只是直线.我们将在2.4节中再次回到正方形,但现在,让我们来更多地了解一下Python Turtle库. 我们再来修改一行代码:t.forward(x).我们在前面看到了这条命令或函数,它将海龟的钢笔向前移动x个像素并且绘制一条笔直的线段:然后,海龟转向并且再次绘制.如果我们修改这行代码来绘制更为复杂一点的图形,例如圆,那会怎么样呢? 好在,绘制一个固定大小(或半径)的圆的命令,和绘制一条直线的命令一样简单.我们将t.forward