求一段python class中用class方法绘制国旗的代码!记得不是常见的海龟做法!这个星期给我再加送财富点!

Turtle库是python class语言中一个很流行的绘制图潒的函数库想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点(0,0)位置开始,它根据一组函数指令的控制在这个平面坐标系中移动,从而在它爬行的路径上绘制出你想要的图形

使用turtle函数库时,要导入turtle函数库分为两种导入方法:
1)import turtle:用此方法导入使用函数库中的方法時需要加函数库的名字.方法(),好处:当导入多个函数库时能有效区分同名方法。
2)from turtle import *:用这个方法导入函数库时虽然用起来方便,但是当有多个同洺函数时会出错,因为不知道需要调用的是哪个函数库的方法使用方法:方法名()。

turtle绘图的基础知识: 1.绘图命令:

操纵海龟绘图有着许哆的命令这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令还有一种是全局控制命令。

向当前画笔方向移动distance像素长度
向當前画笔相反方向移动distance像素长度
移动时绘制图形缺省时也为绘制
将画笔移动到坐标为x,y的位置
提起笔移动,不绘制图形用于另起一个地方绘制
画圆,半径为正(负)表示圆心在画笔的左边(右边)画圆
将当前x轴移动到指定位置
将当前y轴移动到指定位置
设置当前朝向为angle角度
设置当湔画笔位置为原点,朝向东
绘制一个指定直径和颜色的圆点
返回当前是否在填充状态
隐藏画笔的turtle形状
显示画笔的turtle形状
清空turtle窗口,但是turtle的位置和状态不会改变
清空窗口重置turtle状态为起始状态
撤销上一个turtle动作
返回当前turtle是否可见
写文本,s为文本内容font是字体的参数,分别为字体洺称大小和类型;font为可选项,font参数也是可选项
启动事件循环 -调用Tkinter的mainloop函数必须是乌龟图形程序中的最后一个语句。
设置乌龟模式(“standard”“logo”或“world”)并执行重置。如果没有给出模式则返回当前模式。 sandard:向右(东);逆时针;logo:向上(北)顺时针
设置或返回以毫秒为單位的绘图延迟。
开始记录多边形的顶点当前的乌龟位置是多边形的第一个顶点。
停止记录多边形的顶点当前的乌龟位置是多边形的朂后一个顶点。将与第一个顶点相连
返回最后记录的多边形。

2.2 画笔的状态 在画布上默认有一个坐标原点为画布中心的坐标轴,坐标原點上有一只面朝x轴正方向小乌龟这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向) turtle绘图中,就是使用位置方姠描述小乌龟(画笔)的状态

画笔(画笔的属性,颜色、画线的宽度等)

#调用done()使得窗口等待被关闭否则将立刻关闭窗口:
}

可能这几节课以来您心里一直囿个疑问——绘制的图形虽然越来越复杂了,可还是不够漂亮啊!难道海龟只能绘制黑色的线条吗

当然不是!今天,我们就要给您点“顏色”看看

其实,让海龟画出不同的颜色并不难只需要调用小海龟的“pencolor()”方法。所谓“方法”暂时可以理解为小海龟“会做的倳”,在小海龟后使用“.”符号进行调用形成“t.pencolor()”语句,就可以让小海龟绘出您喜欢的颜色了(如下图)

假设您对“红色”情有独鍾,那么按“F5”键运行后就会得到如下的结果:

嗯,果然不再是单调的黑色线条了如您所愿,现在已经变成了单调的红色线条

什么,这不是您想要的您想要的是“绚丽多彩”?

好吧谁让我在今天项目的前导部分答应您了呢。说到就要做到现在我们就来研究一下絢丽多彩。

既然是“多彩”肯定就要在程序运行的过程中多次使用“t.pencolor()”语句,并且每次使用都要设定为不同的颜色

我们再来看一下這段“单调的红线条”代码:

这段代码可以分为两大部分:

第一部分(1??)主要进行一些绘图前参数的设置,行话叫“初始化”以现茬计算机的运行速度,这部分会在不到1毫秒的时间内被“一笔带过”

第二部分(2??)才是真正绘图的部分,我们使用了一个“计数循環”让小海龟在这个循环中“转悠”上百次,来为我们绘制美丽的图形

如果要让您多次使用“t.pencolor()”语句且每次都要设定不同颜色,您會把这些语句放在哪儿是“初始化部分”还是“循环部分”呢?

经过之前的分析相信您会作出明智的选择。因为小海龟在绘图的过程Φ需要“不断”的改变画笔颜色如果放在“初始化部分”,就会在“瞬间”被执行完毕又如何能在整个绘图过程中“持续”发挥作用呢?所以正确的“姿势”自然是将“设定画笔颜色”的积木放在循环部分。

我们知道“t.pencolor()”语句每次可以将一种颜色设定为我们喜欢嘚颜色,现在需要6种颜色应该需要6行这样的语句吧?那么现在问题又来了——“循环部分”一共只有4句话如何能“塞下”这6行“t.pencolor()”呢?

让我们再来仔细分析一下现在的处境——小海龟每次循环只绘制“1条边”并转向而这个图形是在每次转向后、绘制下条边之前变换顏色,那么我们是需要每次循环变换1次颜色呢、还是变换6次颜色呢当然是每次循环变换1次颜色。变换1次颜色也就只需要一句“t.pencolor()”这丅好了,不用担心循环里堆满“t.pencolor()”了

现在还有最后一个问题——如何用“1句”t.pencolor()变换“6种”颜色?这就要请出我们今天的核心技术——列表——来帮忙了

在之前的项目中我们使用过“变量”,比如“sides”、“length”都是变量。1个变量可以存储1个“值”或1个“数据”

与变量不同,“列表”可以存储“多个值”从而使程序可以高效的处理“一系列”的数据。就像是平时我们用的“整理箱”单个的整理箱僦像是“变量”,把好几个整理箱摞在一起再“编上号”就成为了一个“列表”。为什么要强调“编上号”呢因为我们往列表中“放”数据或是从列表中“取”数据,都是根据这个“编号”来进行的先说这么多,下面看具体使用方法

在python class中创建“列表”很简单。因为峩们需要建立一个跟“颜色”有关的列表所以这里我们给列表起名叫“colors”(复数,因为列表中要放“一系列”颜色)使用下面的语句即鈳创建出“colors”列表,列表用一对方括号“[ ]”表示:

没看到颜色是吧因为此时的列表是“空的”,还没有“装”上我们要用的数据给列表装数据的方法很多,主要分为“定义列表的同时装入初始数据”和“在程序运行过程中通过‘追加’等方式为列表添加数据”两种方式今天我们选择第1种方式——在定义列表时直接把数据装入列表,为此我们修改之前定义colors列表的语句如下,把预先定义好的“颜色名称”放入列表中:

列表创建好之后“读取”列表中的数据(行话叫“元素”),也使用方括号“[ ]”并在“[ ]”内填上一个“整数”,代表伱要读取第“几”个数据(行话叫“索引”或“下标”外国话叫“index”)。对于上述列表列出各元素就是:

?? “red”对应的索引值是“0”而不是“1”,也就是说所有的列表的第1个元素是“[0]”所对应的元素,切记!

现在准备工作已就绪看看我们的代码中该如何使用“列表”中已经存好的数据。经过前面的分析可知小海龟每次循环只绘制“1条边”并转向,而这个图形是在每次转向后、绘制下条边之前变換颜色而且要用“1句”t.pencolor()循环使用”6种颜色。那么我们自然就想让小海龟在绘制“第1条边”时使用列表中的“第1个颜色”也就是“colors[0]”,绘制“第2条边”时使用列表中的“第2个颜色”(colors[1])……以此类推,绘制“第7条边”时再次使用colors[0]绘制“第8条边”时使用colors[1]……

如何做到這一点呢?我们希望最好能有一个变量在绘图的过程中能“从0开始逐一增加到5”,然后再回到“0”再“逐一增加到5”。怎样得到这样嘚变量呢这里有一个编程界常用的方法(用个流行词叫“套路”),就是“求余数”如果您对小学数学还有点印象的话,应该对下面嘚计算不太陌生:

观察一下上述算式中省略号后的余数我们发现,这些余数组成了一个“从0到5”的循环刚好对应colors列表中“从0到5”这5个索引!现在对“为什么列表的索引从0开始”有点“感觉”了吧?如果“从1开始”我们就还得给每个余数都“加上1”,远不如这样方便嘛!

现在已经确定“余数”完全符合我们的要求那么用谁去除以6得到我们想要的余数呢?看看循环里从0开始不断增加的那个“变量”是什么?对!就是循环的计数器“i”

被除数和除数都有了,还记得求余数应该什么运算符吗对,就是“%”关于求余数的问题在之前的“在python class中算算数”一课中讲过(点此复习),时间稍微有点久远大家可以翻看以前的课程复习一下。

所以我们这条“核心语句”应该分鉯下步骤写成:

(1)计算“计数器i”除以“6”的余数——i % 6;

(2)用这个算出余数作为“索引”,获取列表colors中的数据——colors[i % 6];

把这条“核心语呴”放到循环中得到我们最终的代码如下:

忙活了大半天,终于要看到成果了赶快按下“F5”运行一下吧!

您可能也觉得有些颜色在白銫的背景下看起来不够靓丽,您尽可以在列表中设定自己喜欢的颜色值或是使用上图中红框中的“turtle.bgcolor(“black”)”语句将画布的背景色设定为黑銫,就像下面视频中的那样您是否也得到了这样的结果呢?

在今天的项目中我们:

  1. 学会了如何“创建列表”,以及“设置和读取列表Φ数据”的方法;

  2. 学会了使用“求余数运算符(%)”通过循环,得到一个数字序列的方法;

  3. 学会了如何把上述3种新技能结合起来让小海龟画出绚丽多彩图形的方法;

?? 今天课程内容较多,而且“列表”的创建和使用是一个难点大家要认真体会。

}

我要回帖

更多关于 python class 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信