文章目录
1 实例: Python 蟒蛇绘制
#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()
2 turtle 库的使用
2.1 turtle 绘图窗体
turtle 的画布空间如下图所示:
绘图窗体左上角的位置代表窗体位置,窗体长和宽代表窗体大小。
窗体的大小及位置可以通过函数 setup() 绘制:
turtle.setup(width, height, startx, starty)
- 4个参数中后两个可选
- setup() 不是必须的
setup() 函数使用如下所示:
2.2 turtle 空间坐标体系
在 turtle 绝对坐标体系,向右为 x 正方向,向上为 y 正方向。
函数goto() 可以直接运动到给定的坐标位置,函数如下:
turtle.goto(x, y)
example:
import turtle
turtle.goto( 100, 100)
turtle.goto( 100,-100)
turtle.goto(-100,-100)
turtle.goto(-100, 100)
turtle.goto(0,0)
执行如下:
circle(r, angle) 以当前点左边距离为 r 的位置为圆心画圆,角度为 angle
fd(d) 表示当前方向前进距离 d
2.3 turtle 角度坐标体系
seth() 函数可以改变行进方向
turtle.seth(angle)
- angle 为绝对度数
- seth() 只改变方向但不行进
left() 和 right 函数分别表示向左向右旋转一定角度:
turtle.left(angle)
turtle.right(angle)
example:
import turtle
turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)
执行:
2.4 RGB 色彩体系
由三种颜色构成的万物色
- RGB指红蓝绿三个通道的颜色组合
- 覆盖视力所能感知的所有颜色
- RGB每色取值范围0-255整数或0-1小数
英文名称 | 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.colormode(mode)
- 1.0:RGB小数值模式
- 255:RGB整数值模式
3 turtle 程序语法元素分析
3.1 库引用与 import
库引用:扩充 Python 程序功能的方式
- 使用 import 保留字完成,采用<a>.<b>()编码风格
import <库名>
<库名>.<函数名>(<函数参数>)
example:
但是多次写 turtle,很繁琐,有另外的写法,更加简单
- 使用 from 和 import 保留字共同完成
from <库名> import <函数名>
from <库名> import *
<函数名>(<函数参数>)
example:
两种写法比较:
写法一:
import <库名>
<库名>.<函数名>(<函数参数>)
写法二:
from <库名> import <函数名>
from <库名> import *
<函数名>(<函数参数>)
第一种方法不会出现函数重名问题,第二种方法则会出现
import 更多用法:给库起别名
- 使用 import 和 as 保留字共同完成
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
给调用的外部库关联一个更短、更适合自己的名字
example:
3.2 turtle 画笔控制函数
画笔控制函数有四个 penup(), pendown(), pensize(), pencolor() 下面分别讲解。
- turtle.penup() 别名 turtle.pu()
抬起画笔 - turtle.pendown() 别名 turtle.pd()
落下画笔 - turtle.pensize(width) 别名 turtle.width(width)
画笔宽度 - turtle.pencolor(color) color为颜色字符串或r,g,b值
画笔颜色
pencolor(color) 的 color 可以有三种形式
- 颜色字符串 :turtle.pencolor(“purple”)
- RGB 的小数值:turtle.pencolor(0.63, 0.13, 0.94)
- RGB 的元组值:turtle.pencolor((0.63,0.13,0.94))
3.3 turtle 运动控制函数
运动控制函数有两个分别是 fd() 和 circle()
- turtle.forward(d) 别名 turtle.fd(d)
向前行进,走直线,d 是行进距离,可以为负数 - turtle.circle(r, extent=None)
根据半径 r 绘制 extent 角度的弧形,默认圆心在海龟左侧 r 距离的位置,extent 为绘制角度,默认是360度整圆
3.4 turtle 方向控制函数
方向控制函数有三个,分别是 seth(),left() 和 right(),seth() 改变绝对角度,left() 和 right()改变海龟角度
- turtle.setheading(angle) 别名 turtle.seth(angle)
改变行进方向,angle 为行进方向的绝对角度 - turtle.left(angle) 海龟向左转
- turtle.right(angle) 海龟向右转
angle: 在海龟当前行进方向上旋转的角度
3.5 基本循环语句
按照一定次数循环执行一组语句
- for <变量> in range(<次数>):
<被循环执行的语句>
<变量>表示每次循环的计数,0 到<次数>-1
example:
>>> for i in range(5):
print("hello:",i)
hello: 0
hello: 1
hello: 2
hello: 3
hello: 4
range()函数:产生循环计数序列
- range(N):产生 0 到 N-1的整数序列,共N个
- range(M,N):产生 M 到 N-1的整数序列,共N-M个
4 小结
turtle 库的使用
- turtle库的海龟绘图法
- turtle.setup() 调整绘图窗体在电脑屏幕中的布局
- 画布上以中心为原点的空间坐标系: 绝对坐标&海龟坐标
- 画布上以空间 x 轴为 0 度的角度坐标系: 绝对角度&海龟角度
- RGB 色彩体系,整数值&小数值,色彩模式切换
turtle 程序语法元素分析
- 库引用: import、from…import、import…as…
- penup()、pendown()、pensize()、pencolor()
- fd()、circle()、seth()
- 循环语句:for 和 in、range() 函数