上一节课我们完成了第一个 Python 作品,今天我们将继续发现 Python 的奥秘,我们的目标是使用 Python 绘制一面红旗,怎么实现,一起来探索吧~
在昨天的第一个 Python 作品中,我们只写了一行代码,看似很简单,但这里也有几个重要的概念需要理解。
little D,昨天我们的代码是怎么写的?
我记着呢,是 print('Hello, Python!')
哪部分是可以变的,哪部分不能变?
我试过了,引号 '' 里面的内容可以随意变,print() 不能变
little D 的回答非常棒!
思考是学习之父,重复是学习之母
课后的复习是非常重要的。
我们先来说一下昨天语句中 print() 的含义。
在 Python 中,print() 被称为是一个函数,可能很多小同学对这个词很陌生,因为函数是初中才会接触到的数学概念...
那怎么办啊?
别着急,我们可以换一种方式来理解函数的概念
函数示意图
上面的图,简单的解释了函数的作用,我们可以把函数理解为一台机器,这台机器有一个入口和一个出口。
当我们把一些原料投入入口,经过这个机器的处理,就可以从出口得到一些产物。
所以,在我们还不是很明白函数的含义时,我们只要清楚这个函数需要什么原料以及得到什么产物就可以,至于机器是怎么处理的,可以先不用关心。
回到这个print()函数,小括号里放的就是原料,而输出就是把原料原封不动的打印出来。
print() 函数的参数可以是引号包含起来的任意文字,也可以是任意的数字,现在,试试看print(123.456)的结果是什么样的?
今天,我们要实现一个绘制红旗的小作品,作为祝福国庆的一个小礼物。
为了实现这个作品,我们要使用一个叫turtle 海龟的library 库。
什么叫库?
这个问题问的很好,库是一个很重要的概念
我们依然以图形的方式来理解库的概念:
美术工具盒
上图是一个美术工具盒,有着各种样式的画笔,在 Python 中,库的概念就类似于这个工具盒。
每个库里面都包含着做一类事情的一套工具,具体来说就是我们上面提到的函数,我们可以很方便的使用库里的某种工具来完成我们需要的功能。
所以什么是库,库就是一个工具箱,turtle 正好类似于上面的美术工具箱,可以用它来完成各种图形的绘制。
不得不说的是,在很多其他计算机语言里面,都有库或者类似于库的概念,库在编程中普遍存在。
现在,我们了解了库和函数的概念,就可以使用海龟库的函数来完成我们的作品了。
在开始之前,我们还需要做一件事情,因为海龟是 Python 语言的一个库,我们需要先把它导入到我们的程序中来。
就像是我们要画画,需要先把工具箱放在我们绘图板旁边是一个道理。
在 Python 中,这个导入的功能,我们使用import语句实现,就是在我们程序的第一行,加上这样一条语句:
import turtle
绘制红旗之前,我们先来画一条简单的直线,这个函数是forward() 向前的意思,向这个函数输入的参数是一个数字,代表线的长度,我们来试试吧:
improt turtle
turtle.forward(100)
把这简单的两行代码写在编辑区,运行一下:
一条直线
这样我们就画了一条长度为 100 的直线
只会直线可不行,让我们在头脑中想象红旗的样子,来仔细思考一下...
画红旗,还需要海龟库为我们提供哪些功能?
嗯,还需要让直线转弯画出折线
还有吗?
还需要使用红色的笔来画
对了,还需要涂上红色
非常好,差不多够用了
little D 提到的这几个功能,海龟库都提供了现成的函数,把我们需要的函数绘成一个表格就是这样的:
函数 | 参数 | 功能 |
---|---|---|
penup | 无参数 | 抬笔 |
pendown | 无参数 | 落笔 |
goto | 横纵坐标 | 移动画笔到指定点 |
pencolor | 颜色名 | 画笔的颜色 |
forward | 长度 | 画直线 |
left | 角度 | 向左转弯 |
right | 角度 | 向右转弯 |
fillcolor | 颜色名 | 填充的颜色 |
begin_fill | 无参数 | 开始填充 |
end_fill | 无参数 | 结束填充 |
晕了...
看起来是不是很复杂?
其实没有那么难,我们来整理一下思路:
开始是,需要抬笔penup,把笔移动goto到一个合适的位置。
然后设置笔的颜色pencolor为红色,落笔pendown,画一条边线forward,向左left(或右right,按你的习惯都可以)画另一条边。
然后,继续转弯、画边、转弯、画边。
这样,一个红色的方框就画好了:
一个红色的方框
但是,还没有涂色啊
对这个稍微特殊一点
因为我们画的是一个闭合图形,是可以涂色的。
涂色有两个函数begin_fill和end_fill,这两个函数需要设置在这个闭合图形绘制的开始之前和结束之后。
当然,别忘了用fillcolor设置要涂的颜色的名字。
我们发现代码中写了很多turtle,很麻烦,可以为它起个别名:
import turtle as t
以后,使用t就可以替代turtle了~
修改后的代码是这样的:
import turtle as t
t.penup()
t.goto(-120, -80)
t.pendown()
t.begin_fill()
t.fillcolor('red')
t.pencolor('red')
t.forward(300)
t.left(90)
t.forward(200)
t.left(90)
t.forward(300)
t.left(90)
t.forward(200)
t.end_fill()
运行后的效果是这样的:
红旗的绘制过程
一个红旗的作品就完成啦!
我们使用海龟库完成了一幅红旗的小作品,大家可以思考一下,怎么画一幅五星红旗的作品呢?
感觉很难啊老师
难的问题通常需要化简
小同学们可以先在纸上画一个五角星,一条边一个角的逐步分析,分析清楚了之后,再使用计算机的语言编写成指令,看计算机能否画出一个完美的五角星⭐️
明天见~