从Scratch到Python 02 从海龟画图开始
2023-05-31 11:10:00
一、课程回顾
在前一节课程中,我们介绍了Python语言的历史、Python语言的特点,以及如何安装配置Python编程环境(海龟编辑器)、写出我们第一个程序“Hello,world”。 在上一课的末尾我们留了一个问题,为什么要写“Hello,world!” 程序?它有什么用? 如你所见,这个程序运行的时候,在海龟编辑器下方的终端区域(就是黑黑的部分)输出了这句话,其它还真没有什么用。那么为什么要写它呢?有以下两点:- 这是一个非常简单的程序,当我们学习一门新语言的时候,总要进行开发环境的配置,完成后写一个简单的程序,来运行测试一下。如果它能输出预期的结果,说明你安装的环境已经能够正常运行了,这是值得庆贺的事情。因为据调查,有许多人都是卡在第一步,环境都没配置好,干脆就放弃了。
- 至于为什么要输出“Hello,world”而不是别的内容,这句话来自《The C Programming Language》(C编程语言,一本经典的学习C语言的图书),“Hello,world”是这本书的第一个演示程序。后来的程序员在学习编程或进行设备调试时延续了这一习惯。也就是说,这是个约定俗成的东西,是很多人学习程序的第一个作品,如果你连它都不知道,就会被人笑话孤陋寡闻了。

二、认识“小海龟”
还记得我们在Scratch中使用过的“画笔”扩展吗?

import turtle
turtle.shape('turtle')
turtle.forward(100)
turtle.done()
运行程序,你会看到一只小海龟从窗口(也就是Scratch中的舞台,对小海龟来说叫“画布”)中央向右边“爬行”了100步,在它的身后留下了一条短短的直线。
是不是很像Scratch中的画图?就是这么简单。让我来解释一下程序: - 第一行“import turtle”是导入小海龟模块,类似于Scratch中加载画笔扩展; - 第二行设置了小海龟的样子,实际上,正如我们在Scratch中画图的角色可以不止有一种一样,Python画图也不一定要用“小海龟”角色,如果你不写这行代码,它默认显示的是一个小箭头,但作用是一样的,都能画图; - 第三行,小海龟执行forward指令,forward就是英语单词前进的意思,括号中的数字是移动的距离,在Scratch称为步数,在Python中称为按照屏幕上的点计算,称为像素。这条指令类似于Scratch中的“移动100步”。相应地,小海龟还有一个指令叫backward(后退),当然,它相当于Scratch中的移动 -XX步(移动负数步); - 第四行,画图结束,让小海龟保留不消失,等待我们操作
小海龟支持的指令是非常丰富的,我们现在先掌握要用到的几个常用指令:
| 指令 | 指令翻译 | 作用 |
|---|---|---|
| forward() | 前进 | 向前移动指定距离 |
| backward() | 后退 | 向后移动指定的距离 |
| left() | 左转 | 小海龟向左转指定的度数 |
| right() | 右转 | 小海龟向右转指定的度数 |
| goto() | 移到 | 对应Scratch中的移动到(x,y)坐标位置 |
| home() | 回家 | 小海龟回到屏幕中央,坐标为(0,0)的原点 |
| circle() | 画圆 | 画出指定大小的圆形 |
| pendown() | 落笔 | 对应Scratch中的落笔指令 |
| penup() | 抬笔 | 对应Scratch中的抬笔指令 |
| pencolor() | 画笔颜色 | 对应Scratch中设置画笔颜色指令 |
| pensize() | 画笔粗细 | 对应Scratch中设置画笔粗细指令 |
| done | 结束 | 在画图程序最后使用,保持图像不消失 |
三、利用小海龟画图
使用海龟编辑器,编写以下的代码:import turtle
turtle.shape('turtle')
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.done()
是的,你看到了,这段代码就是让小海龟前进、左转90度,重复执行了四次,画出了一个边长为100的正方形。你肯定会说——为什么不用“重复执行四次”呢?那不是更简单?别急,Python中的重复执行指令我们不是还没学到嘛。
再来,让小海龟画几个圆形:
import turtle
turtle.shape('turtle')
turtle.forward(100)
turtle.left(144)
turtle.forward(100)
turtle.left(144)
turtle.forward(100)
turtle.left(144)
turtle.forward(100)
turtle.left(144)
turtle.forward(100)
turtle.left(144)
turtle.done()
如果你理解了小海龟的指令,而且回忆起以前做过的Scratch画图程序,可能不用运行就知道,我们这段程序就是用来画五角星的嘛。
上面是使用前进和左转,现在我们用画圆(circle)指令来作图:
import turtle
turtle.pensize(12)
#第一个圆圈
turtle.penup()
turtle.goto(-250,0)
turtle.pendown()
turtle.pencolor('blue')
turtle.circle(100)
#第二个圆圈
turtle.penup()
turtle.goto(0,0)
turtle.pendown()
turtle.pencolor('black')
turtle.circle(100)
#第三个圆圈
turtle.penup()
turtle.goto(250,0)
turtle.pendown()
turtle.pencolor('red')
turtle.circle(100)
#第四个圆圈
turtle.penup()
turtle.goto(-125,-100)
turtle.pendown()
turtle.pencolor('yellow')
turtle.circle(100)
#第五个圆圈
turtle.penup()
turtle.goto(125,-100)
turtle.pendown()
turtle.pencolor('green')
turtle.circle(100)
turtle.done()
上面这段代码有点长,不过有五段的作用是基本一样的,就是先抬笔,移动的特定的坐标位置,然后落笔,设置画笔的颜色(括号中设置的以单引号包括起来的是颜色名称,相信这些单词你应该学过,从上到下分别是蓝色、黑色、红色、黄色和绿色),接着执行circle指令画一个半径为100的圆。这五个颜色不同的圆组合在一起,就变成了大家熟悉的奥运五环。

微信扫码关注
抖音扫码关注