我们可以尝试用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保留字完成,采用.()编码风格
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个