少儿编程

系列

Python 初体验 | 国庆快乐

前言

上一节课我们完成了第一个 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()
                

运行后的效果是这样的:

红旗的绘制过程

一个红旗的作品就完成啦!

五星红旗?

我们使用海龟库完成了一幅红旗的小作品,大家可以思考一下,怎么画一幅五星红旗的作品呢?

感觉很难啊老师

难的问题通常需要化简

小同学们可以先在纸上画一个五角星,一条边一个角的逐步分析,分析清楚了之后,再使用计算机的语言编写成指令,看计算机能否画出一个完美的五角星⭐️

明天见~