2.5 彩色圆环更漂亮
课程内容
本节课主要通过绘制彩色的圆环来学习列表的使用方法、颜色的使用技巧等,通过学习掌握Python程序绘制彩色图形的方法。
知识点
(1)绘制圆形
(2)设置画笔颜色
(3)变换画笔颜色的技巧
(4)列表使用技巧
用到的基本指令
(1)import
(2)turtle.Pen()
(3)circle()
(4)right()
(5)for循环
(6)range()
2.5.1 难点解析之算数和比较运算符
运算符分为算数运算符、比较运算符、逻辑运算符、赋值运算符等。这一节课主要讲解算数运算符和比较运算符。
1.算数运算符
算术运算符是处理四则运算的符号,在数字的处理中应用得最多。Python支持所有的基本算术运算符,见表2-1。
表2-1 Python常用算术运算符
几种算数运算如图2-16所示。
图2-16 几种算数运算
2.比较运算符
比较运算符,也称为关系运算符,用于对常量、变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回True(真);反之,则返回False(假)。Python支持的比较运算符见表2-2。
表2-2 Python比较运算符
如图2-17所示为比较运算符的用法。
图2-17 比较运算符的用法
2.5.2 难点解析之列表
列表(List)是Python中使用最频繁的数据类型。它由一系列按特定顺序排列的元素组成。它的元素可以是字符、数字、字符串,甚至可以包含列表(即嵌套)。
1)在Python中,用方括号([ ])来表示列表,并用逗号来分隔其中的元素,如图2-18所示。
图2-18 列表
如果一个列表的元素包含另一个列表,输出结果会是什么样呢?如图2-19所示。
图2-19 两个列表嵌套
2)我们对程序做出图2-20所示的修改,看看输出结果有何变化。
图2-20 访问列表元素
如果要访问列表第2个元素,应该将程序第二句修改为“print(classmates[1])”。注意列表的索引从0开始,所以第二个元素的索引是1而不是2。如果要访问列表最后一个元素,可以使用一个特殊语法“print(classmates[-1])”来实现。
3)如果想确定列表的长度,可以使用函数len()来获得。如果列表包含4个元素,其长度就为4,如图2-21所示。
图2-21 列表长度
len()函数用途是很广泛的,比如统计网站注册用户数、确定游戏被射杀的敌人等。
4)对列表进行修改元素、添加元素、删除元素等操作,如图2-22所示。
图2-22 列表元素的操作
5)列表的切片。切片是Python编程的高级特性之一,切片可以访问列表一定范围内的元素(简单说就是可以使用列表的一部分)。很多情况下切片是很有用的,例如编写游戏时,你可以在玩家退出游戏时将其最终得分加入到一个列表中,然后来获取3个最高得分(需要先将列表排列一下)。
切片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在切片内的,而第二个则不包含在切片内。切片的操作方法如图2-23所示。
图2-23 列表切片的操作
图2-23 列表切片的操作(续)
6)列表的复制。要复制一个列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引,即[:],如图2-24所示。
图2-24 复制列表
注意,这里是创建了一个列表的副本,而不是将letters赋给b(b=letters是赋给的意思)。它们的区别如图2-25所示。
图2-25 复制和赋给的区别
2.5.3 绘制漂亮的圆图形
前面我们学习了通过t.forward(x)语句来让海龟画笔直线段的方法,那能不能让海龟画圆形呢?当然可以,可以通过t.circle(x)语句来画出一个半径为x的圆。其实,只要将之前编写的程序中的t.forward(x)语句修改为t.circle(x)语句,即可让海龟绘制一个复杂的图形,如图2-26所示。
图2-26 绘制圆形
图2-26 绘制圆形(续)
2.5.4 给图形添加颜色
给图形加色
之前我们绘制的都是黑色的图形,接下来我们让海龟画笔画出彩色的图形。要绘制彩色的图形,只要将海龟画笔的颜色变成其他颜色即可。通过t.pencolor('red')语句来设置画笔颜色(注意语句括号中的颜色必须加引号,单引号和双引号都可以)。如图2-27所示。
图2-27 绘制彩色的图形
常用的颜色包括bule(蓝色)、green(绿色)、yellow(黄色)、white(白色)、black(黑色)、purple(紫色)、brown(棕色)、gray(灰色)等。
上面讲解了将画笔设置为一种颜色的方法,可能有些同学会想,可不可以让每个方向的圆环使用一种颜色呢?这样更漂亮。当然可以,如图2-28所示。
图2-28 绘制多彩的图形
上面的程序是如何执行的呢?
1)首先导入海龟绘图模块,并将变量t设置为海龟的画笔;然后创建列表colors,并加入red、yellow、blue、green四个元素。
2)接着range(100) 会生成从0到99的连续的数;t.circle(x)语句让海龟画笔画出一个以x为半径的圆;t.right(90)语句让海龟画笔向右转动90°。
3)首次执行循环时,for循环先访问range列表中的第一个元素0,并将0存储在变量x中,变量x的值变为了0,0除以4得到余数0。然后执行colors[0],从列表colors中取第一个元素“red”作为画笔颜色的参数。接着将画笔颜色设置为红色(red),并画一个半径为0的圆,然后画笔向右转动90°。
4)执行第二次循环,for循环访问range列表中的第二个元素1,并将1存储在变量x中,变量x的值变为了1。1除以4得到余数1,然后执行colors[1],从列表colors中取第二个元素“yellow”作为画笔颜色的参数。接着将画笔颜色设置为黄色(yellow),画一个半径为1的圆,然后画笔向右转动90°。
5)这样一次一次地继续执行,当for循环遍历range中最后一个元素99时,变量x的值变为99,99除以4得到余数3,然后执行colors[3],从列表colors中取第四个元素“green”作为画笔颜色的参数。接着将画笔颜色设置为绿色(green),画一个半径为99的圆,然后画笔向右转动90°。这样就画出了一个四种颜色的图形。
提示
A除以B,如果A比B小,则相除后的余数是它自己。比如1除以4,余数为1。