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

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

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

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

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

goto使用的是绝对坐标,运行后会留下线条
海龟空间坐标体系:


turtle.fd(d)指向海龟的正前方向运行
turtle.bk(d)指向海龟的反方向运行
turtle.circle(r,angle):以海龟当前位置,左侧的某个点为圆心,以r为半径画圆
import turtle turtle.circle(100,90) turtle.done()
动手试试上述代码,会加深对circle函数的理解

下面我们了解一下海龟库的角度坐标体系
turtle.seth(angle)
1、seth() 改变乌龟行进方向
2、seth只改变方向但不行进
3、angle为绝对角度

海龟也有相对角度

我们来试试如下代码的绘制效果,来体会Turtle的角度体系
import turtle turtle.left(45) turtle.fd(150) turtle.right(135) turtle.fd(300) turtle.left(135) turtle.fd(150) 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色彩模式
默认采用小数值,可以切换成整数值:
turtle.colormode(mode) #1.0:RGB小数值模式 #255:RGB整数值模式
turtle程序语法元素分析:
库引用:
扩充python程序功能的方式
用import保留字完成,采用 <a>.<b>() 编码风格
import <库名>
<库名>.<函数名>(<函数参数>)
#PythonDraw.py import turtle turtle.setup(650, 350, 200, 200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.pencolor("purple") turtle.seth(-40) for i in range(4): turtle.circle(40, 80) turtle.circle(-40, 80) turtle.circle(40, 80/2) turtle.fd(40) turtle.circle(16, 180) turtle.fd(40 * 2/3) turtle.done()
这么多turtle令人烦恼,我们可以选择更简洁的方法
import的其他用法:
使用from和import两个保留字共同完成
from <库名> import <函数名>
from <库名> import *
接着便可使用 <函数名>(<函数参数>) 完成库的使用
#PythonDraw.py from turtle import * setup(650, 350, 200, 200) penup() fd(-250) pendown() pensize(25) pencolor("purple") seth(-40) for i in range(4): circle(40, 80) circle(-40, 80) circle(40, 80/2) fd(40) circle(16, 180) fd(40 * 2/3) done()
两种方法的优缺点:
因为第一种方法不会出现函数重名问题,
而第二种方法会出现函数重名问题,和用户自定义的函数名称一致,出现函数名冲突的情况
import的更多用法
使用import和as保留字共同完成
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
相当于给库起个简单的名字,如:狗娃
#PythonDraw.py import turtle as t t.setup(650, 350, 200, 200) t.penup() t.fd(-250) t.pendown() t.pensize(25) t.pencolor("purple") t.seth(-40) for i in range(4): t.circle(40, 80) t.circle(-40, 80) t.circle(40, 80/2) t.fd(40) t.circle(16, 180) t.fd(40 * 2/3) t.done()
这种方式冗余的代码量最少,同时防止了库重名的问题
下面我们来分析下面这段代码的画笔控制函数
turtle.penup() turtle.pendown() turtle.pensize(25) 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:行进距离,可以为负数
trutle.back(d) 简写:trutle,bk(d)
向后行进,海龟走直线
turtle.circle(r,extend=None)
根据半径r绘制extend角度的弧形
r:默认圆心在海龟左侧r距离的位置;如果r为负数,则默认圆心在海龟右侧r距离的位置
extent:绘制角度,默认360度整圆

方向控制函数
控制海龟面对的方向:绝对角度和海龟角度
turtle.setheading(angle) 别名:turtle.seth(angle)
改变行进方向,海龟走角度
angle:改变行进方向,海龟走角度

turtle.left(angle) 海龟向左转
turtle.right(angle) 海龟向右转
angle:在海龟当前行进方向上旋转的角度
循环语句与range()函数
循环语句:按照一定次数循环执行一组语句
for <变量> in range(<参数>):
<被循环执行的语句>
<参数>表示每次循环的计数,0到<次数>-1

range()函数:产生循环计数序列
range(N) 产生0到N-1的整数序列,共N个
range(M,N)产生M到N-1的整数序列,共N-M个

浙公网安备 33010602011771号