第四章 python的turtle库的运用
我们可以尝试用python的自带turtle库绘制一条蟒蛇
首先我们设计一下蟒蛇的基本形状

我们先把这段蟒蛇绘制的实例代码贴出来,各位可以在自己的本地运行一下看看效果,然后我们再继续分析代码:
1 #PythonDraw.py
2 import turtle
3 turtle.setup(650, 350, 200, 200)
4 turtle.penup()
5 turtle.fd(-250)
6 turtle.pendown()
7 turtle.pensize(25)
8 turtle.pencolor("purple")
9 turtle.seth(-40)
10 for i in range(4):
11 turtle.circle(40, 80)
12 turtle.circle(-40, 80)
13 turtle.circle(40, 80/2)
14 turtle.fd(40)
15 turtle.circle(16, 180)
16 turtle.fd(40 * 2/3)
17 turtle.done()
程序关键:import保留字,引入了一个绘图体系,名字叫:turtle,就是海龟
学会海龟绘图体系之后,我们可以完成更加复杂的绘制:五角星绘制、国旗绘制、机器猫绘制
掌握了绘制一条线的方法,就可以绘制整个世界
turtle库概述:
turtle库的turtle绘图体系的python实现
turtle绘图体系:1969年诞生,主要用于程序设计入门
python的标准库之一,入门级的图形绘制函数库
python的计算生态:python标准库+第三方库
标准库:随解释器直接安装到操作系统的功能模块
第三方库:需要经过安装才能使用的功能模块
turtle的原理:
turtle是一种真实的存在,有一只海龟,在窗体的正中心,在画布上游走
走过的轨迹形成了绘制的图形
海龟由程序控制,可以变换颜色、改变宽度等
turtle的绘图窗体:
turtle的一个画布空间,最小单位是像素
turtle的绘图窗体:

turtle的绘图窗体:
1 turtle.setup(width, height, startx, starty)
注意三点:
1、setup设置船体的大小及位置
2、4个参数后两个参数可选
3、setup不是必须的

turtle空间坐标体系
绝对坐标:

1 turtle.goto(x,y)
这句是常用语法,让海龟爬
我们试试如下的代码,然后看看运行结果
1 import turtle
2 turtle.goto( 100, 100)
3 turtle.goto( 100,-100)
4 turtle.goto(-100,-100)
5 turtle.goto(-100, 100)
6 turtle.goto(0,0)
我们运行之后看看效果,如下图所示:

海龟的空间坐标体系

turtle.circle(r,angle),海龟左侧圆心,半径为r画圆
1 import turtle
2 turtle.circle(100,90)
3 turtle.done()
动手试试上述代码,会加深对circle函数的理解
下面我们了解一下海龟库的角度坐标体系
turtle.seth(angle)
1、seth() 改变乌龟行进方向
2、angle为绝对角度
3、seth只改变方向但不行进

海龟也有相对角度
1 turtle.left(angle)
2 turtle.right(angle)
我们来试试如下代码的绘制效果,来体会Turtle的角度体系
1 import turtle
2 turtle.left(45)
3 turtle.fd(150)
4 turtle.right(135)
5 turtle.fd(300)
6 turtle.left(135)
7 turtle.fd(150)
8 turtle.done()
绘制结果如下图所示:

下面我们涉及一下RGB色彩体系
万物色都可以由三种颜色构成
RGB指的是红绿蓝三个通道的颜色组合
覆盖视力所能感知的所有颜色
RGB每色取值范围是0-255或0-1小数
常用的RGB色彩:
| 英文名称 | RGB整数值 | RGB小数值 | 中文名称 |
| white | 255,255,255 | 1,1,1 | 白色 |
| yellow | 255,255,0 | 1,1,0 | 黄色 |
| magenta | 255,0,255 | 1,0,1 | 洋红 |
| cyan | 0,255,255 | 0,1,1 | 青色 |
| blue | 0,0,255 | 0,0,1 | 蓝色 |
| black | 0,0,0 | 0,0,0 | 黑色 |
| seashell | 255,245,238 | 1,0.96,0.93 | 海贝色 |
| gold | 255,215,0 | 1,0.84,0 | 金色 |
| pink | 255,192,203 | 1,0.75,0.80 | 粉红色 |
| brown | 165,42,42 | 0.65,0.16,0.16 | 棕色 |
| purple | 160,32,240 | 0.63,0.13,0.94 | 紫色 |
| tomato | 255,99,71 | 1,0.39,0.28 | 番茄色 |
turtle的RGB色彩模式
默认采用小数值,可以切换成整数值:
1 turtle.colormode(mode)
2 #1.0:RGB小数值模式
3 #255:RGB整数值模式
turtle程序语法元素分析:
库引用:
扩充python程序功能的方式
用import保留字完成,采用<a>.<b>()编码风格
import <库名>
<库名>.<函数名>(<函数参数>)
1 #PythonDraw.py
2 import turtle
3 turtle.setup(650, 350, 200, 200)
4 turtle.penup()
5 turtle.fd(-250)
6 turtle.pendown()
7 turtle.pensize(25)
8 turtle.pencolor("purple")
9 turtle.seth(-40)
10 for i in range(4):
11 turtle.circle(40, 80)
12 turtle.circle(-40, 80)
13 turtle.circle(40, 80/2)
14 turtle.fd(40)
15 turtle.circle(16, 180)
16 turtle.fd(40 * 2/3)
17 turtle.done()
可是,超级多的turtle,好烦,咋办????
import的更多用法:
使用from和import保留字共同完成
from <库名> import <函数名>
from <库名> import *
<函数名>(<函数参数>)
1 #PythonDraw.py
2 from turtle import *
3 setup(650, 350, 200, 200)
4 penup()
5 fd(-250)
6 pendown()
7 pensize(25)
8 pencolor("purple")
9 seth(-40)
10 for i in range(4):
11 circle(40, 80)
12 circle(-40, 80)
13 circle(40, 80/2)
14 fd(40)
15 circle(16, 180)
16 fd(40 * 2/3)
17 done()
这么好的方法咋不早说呢???
因为第一种方法不会出现函数重名问题,而第二种方法会出现函数重名问题
import的更多用法
使用import和as保留字共同完成
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
相当于给库起个简单的名字,如:狗娃
1 #PythonDraw.py
2 import turtle as t
3 t.setup(650, 350, 200, 200)
4 t.penup()
5 t.fd(-250)
6 t.pendown()
7 t.pensize(25)
8 t.pencolor("purple")
9 t.seth(-40)
10 for i in range(4):
11 t.circle(40, 80)
12 t.circle(-40, 80)
13 t.circle(40, 80/2)
14 t.fd(40)
15 t.circle(16, 180)
16 t.fd(40 * 2/3)
17 t.done()
这个方法比较推荐,也简洁了代码书写。
下面我们来分析下面这段代码的画笔控制函数
1 turtle.penup()
2 turtle.fd(-250)
3 turtle.pendown()
4 turtle.pensize(25)
5 turtle.pencolor("purple")
画笔操作后一直有效,一般成对出现
turtle.penup() #抬起画笔,海龟在飞 别名:turtle.pu()
turtle.pendown() #方向画笔,海龟在爬 别名:turtle.pd()
画笔设置后一直有效,直到下次重新设置
turtle.pensize(width) 别名:turtle.width(width)
画笔宽度,也就是海龟的腰围
turtle.pencolor(color) color为颜色字符串或者RGB值
画笔颜色,海龟在涂装
pencolor(color)中的color参与可以有三种形式
1、颜色字符串 :turtle.pencolor("purple")
2、RGB的小数值:turtle.pencolor(0.63,0.13,0.94)
3、RGB的元组值:turtle.pencolor((0.63,0.13,0.94))
turtle的运动控制函数
控制海龟行进:走直线&走曲线
turtle.forward(d) 别名turtle.fd(d)
向前行进,海龟走直线
d:行进距离,可以为负数
turtle.circle(r,extend=None)
根据半径r绘制extend角度的弧形
r:默认圆心在海龟左侧r距离的位置
extent:绘制角度,默认360度整圆
方向控制函数
turtle.seth(45)
turtle.seth(-135)

控制海龟面对的方向:绝对角度和相对角度
turtle.left(angle) 海龟向左转
turtle.right(angle) 海龟向右转
angle:在海龟当前行进方向上旋转的角度
循环语句与range()函数
1 for i in range(4):
2 tirtle.circle(40,80)
3 tirtle.circle(-40,80)
按照一定次数循环执行一组语句
for <变量> in range(<次数>):
<被循环执行的语句>
<变量>表示每次循环的计数,0到<次数>-1

range()函数:产生循环计数序列
range(N) 产生0到N-1的整数序列,共N个
range(M,N)产生M到N-1的整数序列,共N-M个
第四章 python的turtle库的运用的更多相关文章
- [Python学习笔记][第四章Python字符串]
2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...
- [Python笔记][第四章Python正则表达式]
2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...
- Python使用turtle库与random库绘制雪花
记录Python使用turtle库与random库绘制雪花,代码非常容易理解,画着玩玩还是可以的. 完整代码如下: 效果图如下:
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Python之turtle库-小猪佩奇
Python之turtle库-小猪佩奇 #!/usr/bin/env python # coding: utf-8 # Python turtle库官方文档:https://docs.python.o ...
- 《Python CookBook2》 第四章 Python技巧 对象拷贝 && 通过列表推导构建列表
(先学第四章) 对象拷贝 任务: Python通常只是使用指向原对象的引用,并不是真正的拷贝. 解决方案: >>> a = [1,2,3] >>> import c ...
- Python中turtle库的使用
Turtle图形库 Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种: 画笔控制函数 penup():抬起画笔: pendow ...
- python使用turtle库绘制奥运五环
效果图: #奥运五环 import turtle turtle.setup(1.0,1.0) #设置窗口大小 turtle.title("奥运五环") #蓝圆 turtle.pen ...
- Python:turtle库的使用及图形绘制
目录 一.绘制一个八边形 二.绘制一个八角图形 三.简述问题 四.循环程序设计 五.绘制一个自己喜欢的图形 一.绘制一个八边形 使用turtle库,绘制一个八边形 代码: from turtle im ...
随机推荐
- 【补档_STM32单片机】脉搏波采集显示硬件设计
一.脉搏波简介 脉搏一般情况下指的都是动脉脉搏.每分钟的脉搏次数称为脉率,正常情况下与心率是一致的.心脏的一次收缩和舒张成为一个心动周期.在每个心动周期内,心室的收缩和舒张会引起脉内压力的周期性波 ...
- opentack - 本地化
目录 1 Openstack minimal component 1 组件与功能 2 集群数据存储 2 neutron控制端和计算节点 2.1 SDN网络实现方式 2.2 安全组实现 2.3 虚拟机内 ...
- MMF的初步介绍:一个规范化的视觉-语言多模态任务框架
在VQA, Image Caption等任务中,构建模型是一件工作量较大的工作.有没有什么能减少这些重复的工作量呢?与此同时,Pytorch,tensorflow等开源的深度学习工具包发布,大大减少了 ...
- CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状
CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Sha ...
- TensorRT 数据格式说明
TensorRT数据格式说明 NVIDIA TensorRT支持不同的数据格式.需要考虑两个方面:数据类型和布局. 数据类型格式 数据类型是每个单独值的表示.它的大小决定了数值的范围和表示的精度:分 ...
- CodeGen概述
CodeGen概述 CodeGen是在协同开发环境中工作的软件开发人员可以用来生成源代码的工具.该代码可能是Synergy DBL代码,也可能是其他语言的源代码.CodeGen并不局限于为任何特定的开 ...
- Imec推出高性能芯片的低成本冷却解决方案
Imec推出高性能芯片的低成本冷却解决方案 Imec unveils low-cost cooling solution for high-performance chips 3D打印冷却器优于传统解 ...
- 孟老板 BaseAdapter封装 (一) 简单封装
BaseAdapter封装(一) 简单封装 BaseAdapter封装(二) Header,footer BaseAdapter封装(三) 空数据占位图 BaseAdapter封装(四) PageHe ...
- Redis系列(五):消息队列
消息队列已经成为现在互联网服务端的标配组件,现在比较常用的消息中间件有RabbitMQ.Kafka.RocketMQ.ActiveMQ.说出来你可能不信,Redis作为一个缓存中间件,居然也提供了消息 ...
- LeNet-5网络搭建详解
LeNet-5是由Yann LeCun设计的用于手写数字识别和机器打印字符的卷积神经网络.她在1998年发表的论文<基于梯度学习的文本识别>中提出了该模型,并给出了对该模型网络架构的介绍. ...