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

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

其实,让海龟画出不同的颜色并不难,只需要调用小海龟的“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中创建“列表”很简单。因为我们需要建立一个跟“颜色”有关的列表,所以这里我们给列表起名叫“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 ➗ 6 = 0 …… 0

1 ➗ 6 = 0 …… 1

2 ➗ 6 = 0 …… 2

3 ➗ 6 = 0 …… 3

4 ➗ 6 = 0 …… 4

5 ➗ 6 = 0 …… 5

6 ➗ 6 = 1 …… 0

7 ➗ 6 = 1 …… 1

8 ➗ 6 = 1 …… 2

……

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

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

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

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

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

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

(3)用从列表colors中获取的数据,改变海龟画笔的颜色——t.pencolor(colors[i % 6])。

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

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

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

项目小结:

在今天的项目中,我们:

学会了小海龟“设定画笔颜色”的方法——t.pencolor( “red”);

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

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

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

学会了“设定画布背景颜色”的方法——turtle.bgcolor(“black”) 。

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

python海龟绘图颜色_Python:海龟绘图(六)——来点颜色看看相关推荐

  1. python气象绘图速成_Python气象绘图教程(十六)—Cartopy_6

    本节提要:使用cartopy进行市县的色块填色.模仿geopandas绘制颜色图 一.利用cartopy进行市县的色块填色 其实geopandas在这方面比cartopy更加专业,由于是基于panda ...

  2. python turtle 画老鼠_Python Turtle绘图 鼠年画老鼠爷

    Python Turtle绘图 鼠年画老鼠爷 前言 效果图 必要知识 源代码 后记 前言 本文介绍的是如何运用Python的turtle画一只老鼠.为什么会无聊想到做这个呢?还不是想获得24小时的请假 ...

  3. python不同颜色数值大小_python matplotlib:plt.scatter() 大小和颜色参数详解

    语法 plt.scatter(x, y, s=20, c='b') 大小s默认为20,s=0时点不显示:颜色c默认为蓝色. 为每一个点指定大小和颜色 有时我们需要为每一个点指定大小和方向,以区分不同的 ...

  4. python画图turtle小人_python海龟绘图怎么增加每次画圆的半径|海龟python做图教程...

    在python的海龟作图中怎么取一个图形的对称图形 用坐标法吧,turtle默认的初始位置是(0,0),用penup(),goto(),pendown()移动到某个位置,自己算一下就可以.然后,用st ...

  5. python改变背景颜色_python中绘图时怎么改背景颜色?

    python中一般使用matplotlib库进行绘图,下面我们就来看一下python中绘图时修改背景颜色的方法: 子图可以对plt.subplot的参数做修改,下面是对子图的背景颜色修改代码:impo ...

  6. python怎么更改背景颜色_python中绘图时怎么改背景颜色?

    python中一般使用matplotlib库进行绘图,下面我们就来看一下python中绘图时修改背景颜色的方法: 子图可以对plt.subplot的参数做修改,下面是对子图的背景颜色修改代码:impo ...

  7. python画图小猪佩奇_python海龟作图20秒完成小猪佩奇,附源码!

    Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...

  8. Python 柱状图 横坐标 名字_Python气象绘图教程(四)

    本节提要:回顾复习,新的调整命令. 一.回顾复习 前面讲到Python库包的下载与安装,推荐使用conda命令进行安装,通过conda list查看当前已经安装好的库包及版本. 画图步骤:①impor ...

  9. python气象绘图速成_Python气象绘图Day-By-Day

    登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 edwardli 于 2017-6-13 10:02 编辑 工作繁事多,先上结果供交流,回头不断细化. 我 ...

  10. python turtle 画数字_Python Turtle绘图

    1. 画布(canvas) 画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置 1.1 设置画布大小 turtle.screensize(canvwidth=None, ca ...

最新文章

  1. 1.QML语法、属性和元素
  2. JavaScript (二)
  3. 做为前端开发者,你应该要懂的 http协议
  4. 73 Zabbix 微信告警
  5. mysql表关联关于Hibernate的异常org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException
  6. java和net共同点,Java和.NET中的垃圾回收机制比较
  7. php开发领域,PHP-MySQL相关领域
  8. mybatis配置properties属性
  9. 云计算和并行计算的关系
  10. Linux高性能服务器编程:进程池和线程池原理及应用(有图有代码有真相!!!)
  11. 虚拟机+Ubuntu+filezilla连接
  12. [渝粤教育] 江西财经大学 实用英语演讲 参考 资料
  13. 用 Python3 + Selenium 实现模拟QQ空间登录及自动点赞功能
  14. opencv-python——基于标志物的道路逆透视变换
  15. 新起典|《奇妙·夜德天蚂拐节》定终身场景多媒体内容升级项目
  16. 三国志战略版:不接受反驳的全服最强五虎盾
  17. 画质超高的仙侠java游戏_画质超高的游戏有哪些?顶级画质大型游戏盘点
  18. 夯实C++基础学习笔记
  19. Java学习日记(31-40天,图)
  20. 《论文阅读》开放域对话摘要(长文本|知识嵌入)

热门文章

  1. 信息系统安全 总结提纲
  2. Java开发16个经典面试问题
  3. 数据分析——Python内容学习【1】
  4. 【tensorflow-C++之一】Beginner开始工程化
  5. P4565 [CTSC2018]暴力写挂 题解
  6. undertale人物_传说之下全人物介绍 人物评价解析
  7. php企业后台管理系统模板,DouPHP_admin 蓝色企业CMS后台管理模板 - 下载 - 搜珍网...
  8. N款在线图片处理工具,让你的效率翻倍
  9. 用matlab求系统幅度频率响应,matlab频率响应
  10. 怎么使用电脑打开手机分享的vcf联系人文件