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

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

其实,让海龟画出不同的颜色并不难,只需要调用小海龟的“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花

    我在高中的编程课上和海龟图形一起工作,这个项目是按照老师演示的一些指导原则和功能制作一朵花.我在一个小时内就完成了,现在我正试图用更多的海龟一次画出多朵花,但我不能让海龟们使用新定义的函数,老师也没有 ...

  2. python海龟画图代码大全_python海龟库(turtle)中颜色的表示方法

    在python海龟库中,表示颜色的方法有很多,总体来讲共分成以下两类. 1. 用字符串表示颜色 在turtle库中,我们常常用颜色所对应的英文单词来直观的表示颜色. 例如:"red" ...

  3. python图案代码大全_Python练习代码实例65-一个最优美的图案

    Python 练习实例65 题目:一个最优美的图案. 程序分析:无. 程序源代码:#!/usr/bin/python # -*- coding: UTF-8 -*- import math class ...

  4. 【转】python改文件夹名称大全_python文件和目录操作方法大全(含更改文件夹下所有文件名称的实例)

    原文:​​​​​​ ​​​​​​​​​​​​​​​​​​​python改文件夹名称大全_python文件和目录操作方法大全(含更改文件夹下所有文件名称的实例)..._心失荒野的博客-CSDN博客 一. ...

  5. python海龟代码大全_海龟交易系统的Python完全版 | RiceQuant米筐量化社区 交易策略论坛...

    @zhaoyang-chen 海龟的Python版出炉. 为方便对比,这里把java.python两种语言代码同时贴出,回测时间及初始资金均使用页面默认的20140104-20150104,10000 ...

  6. python有趣的图案代码20行,有趣的代码大全python

    python画五角星代码 python是一种强大的编程语言,通过使用python,我们可以进行各种各样的图案.语句.动画等等编程.你知道用python画五角星的代码是什么吗?今天小编就来为大家详细演示 ...

  7. python画画代码大全_python 相关主题_Debug5

    Python主题 Python 2020年11月16日 14:3020 如何使用python random模块生成随机值,随机打乱顺序 Python 2020年11月16日 11:3030 pytho ...

  8. bat小游戏代码大全_Python打砖块小游戏源代码

    这次用Python实现的是一个接球打砖块的小游戏,最核心的就是:碰撞检测的数学模型 程序运行截图: 其实,编程问题到最后就是数学问题,这个游戏涉及到2D圆形与矩形的碰撞检测问题: 碰撞检测原理:通过找 ...

  9. python趣味编程代码大全_Python趣味编程 20行代码实现读心术

    秘读心术 这是一个吉卜赛人古老的神秘读心术,它能测算出你内心的感应.百试不爽,非常的可怕.在心中从10~99之间任意挑选一个数,用这个数先减去它自己的十位数再减去它的个位数,得到最终的数.在图表中找出 ...

最新文章

  1. ASP.NET 2.0中如何连接到Mysql(转)
  2. mysql数据导入、导出
  3. vector机器人 HOW TO CHARGE VECTOR 如何给矢量充电
  4. 第 39 章 ThinkPHP--视图
  5. 人工智能秘史(四):憧憬人机共生的“DARPA梦想家”
  6. 第一步:python下PyGame的下载与安装
  7. 大快DKH大数据网络爬虫安装教程(详细图文步骤)
  8. 查看linux系统端口占用情况
  9. 简单的Swagger生产环境中屏蔽
  10. 对入门使用者比较友好的视频剪辑工具推荐
  11. 轻量级深度神经网络推理引擎——阿里巴巴的 MNN
  12. 程序员接单网站哪个好(盘点十大程序员接私活平台)
  13. 【用户研究】【实战】——“得到”APP 可用性测试
  14. 吴军《态度》读书笔记
  15. 算法/贪心算法/FractionalKnapsack部分背包问题
  16. 地图省界线什么样_地图上省份的划分精细复杂,为何分得这么细致?原来有这么多学问...
  17. python m4a转mp3_python脚本实现音频m4a格式转成MP3格式
  18. 2023年房地产地段研究报告
  19. 移动UPS电源使用(不间断电源)
  20. 嵌入式系统基础:点阵汉字的字模读取与显示

热门文章

  1. openSUSE-11.1 on TP SL500
  2. Uipath 浏览器页面最大化和最小化
  3. 【机器学习笔记39】时序分析(非平稳序列建模)
  4. wxpython在线 安装_离线安装wxpython
  5. Storm的窗口操作
  6. hadoop3.1.3 HA
  7. 林老师最后一次大作业:Project 10 – RTSP Windows Client: RFC 2326
  8. 自然语言处理的21个基本概念
  9. cadence 旋转快捷键_cadence原理图快捷键整理
  10. vcs与verdi的简单使用