从Scratch到Python 02 从海龟画图开始

一、课程回顾

在前一节课程中,我们介绍了Python语言的历史、Python语言的特点,以及如何安装配置Python编程环境(海龟编辑器)、写出我们第一个程序“Hello,world”。

在上一课的末尾我们留了一个问题,为什么要写“Hello,world!” 程序?它有什么用?

如你所见,这个程序运行的时候,在海龟编辑器下方的终端区域(就是黑黑的部分)输出了这句话,其它还真没有什么用。那么为什么要写它呢?有以下两点:

  • 这是一个非常简单的程序,当我们学习一门新语言的时候,总要进行开发环境的配置,完成后写一个简单的程序,来运行测试一下。如果它能输出预期的结果,说明你安装的环境已经能够正常运行了,这是值得庆贺的事情。因为据调查,有许多人都是卡在第一步,环境都没配置好,干脆就放弃了。
  • 至于为什么要输出“Hello,world”而不是别的内容,这句话来自《The C Programming Language》(C编程语言,一本经典的学习C语言的图书),“Hello,world”是这本书的第一个演示程序。后来的程序员在学习编程或进行设备调试时延续了这一习惯。也就是说,这是个约定俗成的东西,是很多人学习程序的第一个作品,如果你连它都不知道,就会被人笑话孤陋寡闻了。
C程序设计语言

“Hello,world”,翻译过来就是“你好,世界”,是你用程序语言向世界打的第一声招呼,意思是:我来了,我准备好啦!

那么,你准备好了吗?

让我们先来做点有趣的。

二、认识“小海龟”

还记得我们在Scratch中使用过的“画笔”扩展吗?

02 Scratch的画笔扩展.png

当我们需要使用Scratch画图的时候,我们会先把画笔这个扩展模块添加进来,然后你就可以使用画笔指令配合角色的移动、旋转画出丰富多彩的图案,甚至可以画出动画作品。最常用的画笔指令是全部清除、落笔、抬笔、设置笔的颜色和粗细等。我们可以想象在落笔的时候,角色在舞台上移动的轨迹被“画”下来了,而抬笔的时候就不再画这些轨迹,利用这个简单的原理,我们已经创作了许多有趣的作品。

下面这是一个简单的Scratch画笔应用程序,我们可以简单地回顾一下:

03 画笔使用.png

与Scratch类似,Python也提供了用于画图的扩展模块,称为Turtle库(即“小海龟”),你可以把小海龟理解为Scratch中的角色,只要我们控制这只小海龟的移动,同样可以在舞台(画布)上画出漂亮的图案(编程猫提供的Python学习工具为什么叫“海龟编辑器”呢?可能也是与这只小海龟有关系吧!)。不过,Python提供的小海龟可是比Scratch要强大多了,上次课程我们画的那棵漂亮的小树就是用它“画”的,只是我们目前还不需要做这么复杂的画图程序,让我们先从小海龟开始,体验一下Python这门编程语言的强大之处。今天所讲的内容你不一定完全理解,只要跟着老师的节奏把代码写出来,能运行得到同样的效果就可以。以后我们会随着学习的深入逐步理解程序的写法。

让我们打开“海龟编辑器”,写出下面这四行代码:

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的圆。这五个颜色不同的圆组合在一起,就变成了大家熟悉的奥运五环。

在程序中有几行以“#”开头的文字,它们不是指令,以#开头代表这一行是注释,是为了方便我们理解程序的含义写给自己备忘的。以后我们会讲解程序注释的方法,这里先了解即可。

在程序的开头,我们用pensize()设置了画笔粗细,对于用惯了Scratch画图的你来说,这一切是不是都似曾相识?只要灵活运用上面提到的这些指令,再结合你在Scratch编程训练中学习到的内容,你已经可以画许多图形了。

四、作业

使用今天学习到的turtle扩展库,画出一个彩色的正八边形(颜色按你自己喜欢的来)。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

从Scratch到Python 01 进入Python编程的世界

2023-5-31 11:02:45

综合资讯

scratch找食物,电子学会图形化编程等级考试一级真题

2023-5-31 23:03:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索