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()
import
保留字,引入了一个绘图库名字叫:turtle(海龟库)
turtle库的使用
trutle的绘制窗体
单位是像素,一般简略的直接称数值
显示屏的左上角为坐标原点(0,0);
窗口的左上角是(startx,starty);
setup(w, h, x, y)函数
setup()
设置窗体大小及位置
turtle.setup(width, height, startx, starty)
四个参数的后连两个是可选的(即可不填写默认在程序正中)
setup()
函数并非是必须的,只有你需要控制其位置和大小时可写
turtle库的空间坐标体系
-
绝对坐标
整张画布的正中心坐标为(0,0)
参考系是整张的画布
goto(x, y)函数
turtle.goto(x, y)
-- 让所处任何位置的海龟到达指定坐标
#示例代码 turtle.goto(100, 100) turtle.goto(100, -100) turtle.goto(-100, -100) turtle.goto(-100, 100) turtle.goto(0, 0)
-
海龟坐标
fd(d)函数
turtle.fd(d)
-- 让海龟往前进方向移动
bk(d)函数
turtle.bk(d)
-- 让海龟往后退方向移动
circle(r, angle)函数
trutle.circle(r, angle)
-- 让海龟往当前位置左侧的某一个点为圆心曲线移动
trutle的角度坐标体系
-
绝对角度
seth(angle)函数
turtle.seth(angle)
-- 改变海龟行进的方向,但不行进
angle为绝对度数
示例:
turtle.seth(45)
turtle(-135)
-
海龟角度
相对于海龟的角度偏向
left(angle)函数
让海龟向左改变方向
right(angle)函数
让海龟向右改变方向
示例代码
#Z字形 import turtle turtle.left(45) turtle.fd(150) turtle.right(135) turtle.fd(300) turtle.left(135) turtle.fd(150)
RGB色彩体系
RGB色彩模式
有三种颜色构成万物色
-
RGB指红绿蓝三个通道的颜色组合
-
覆盖视力所能感知的所有颜色
-
RGB每色取值范围0~255整数或0~1小数
常用RGB颜色
turtle库默认采用RGB的小数值来表示颜色
colormode(mode)函数
turtle.colormode(mode)
表示颜色默认采用小数值,可切换为整数值
-
1.0
:RGB小数值模式 -
255
:RGB整数值模式
trutle程序语法分析
库引用与import
形如
turtle.setup(650, 350, 200, 200)
为<a>.<b>()
的编码风格
-
库引用
扩充Python程序功能的方式
使用import
保留字完成
采用<a>.<b>(<函数参数>)
的编码风格
#格式 import <库名> <库名>.<函数名>(<函数参数>)
import的简化方法
使用from
和import
保留字共同完成
#格式 form <库名> import <函数名> #或 form <库名> import * <函数名>(<函数参数>)
函数改造
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 <库别名> <库别名>.<函数名>(<函数参数>)
给调用的外部库关联一个更短、更适合自己的名字
冗余代码量最少且不会造成函数名重复
函数改造
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.down()
画笔控制函数
海龟即是画笔,画笔控制即使控制海龟
画笔操作后一直有效,直到下次重新设置,一般成对出现
penup()函数
别名trutle.pu()
画笔抬起,海龟在飞行 -- 不在画布上留下图案
pendown()函数
画笔落下,海龟在爬行 -- 在画布上留下图案
pensize(width)函数
画笔宽度,海龟的腰围
别名trutle.width(width)
pencolor(color)函数
画笔颜色,海龟的涂装
color
为颜色字符串或r,g,b
值
#color参数的三种形式,以**紫色**为例 trutle.pencolor("purple") #颜色字符串 trutle.pencolor(0.63, 0.13, 0.94) #RGB的小数值 trutle.pencolor((0.63, 0.13, 0.94)) #RGB的元组值
运动控制函数
控制海龟行进:走直线&走曲线
forward(d)函数
向前行进,海龟走直线
d
-- 行进距离,可以为负数,单位是像素
别名turtle.fd(d)
circle(r, extent)函数
根据半径r
绘制extent
角度的弧形
r
-- 默认圆心在海龟左侧r
距离的位置
若r
为负数则圆心在右侧
extent
-- 绘制角度,默认是360度的整圆(可选填)
方向控制函数
控制海龟面对方向:绝对角度&海龟角度
-
绝对角度
setheading(angle)函数
别名turtle.seth(angle)
改变行进方向
angle为绝对度数
示例:
turtle.seth(45)
turtle(-135)
-
海龟角度
相对于海龟的角度偏向
left(angle)函数
turtle.left(angle)
海龟向左转
right(angle)函数
turtle.right(angle)
海龟向右转
angle:在海龟当前行进方向上旋转的角度
注意点
方向控制函数只改变海龟行进的方向,并不能在实际绘图上让海龟移动,如有需要需与运动控制函数配合
循环语句与 range() 函数
循环
按照一定次数循环执行一组语句
#格式 for <变量> in range (<参数>) <被循环执行的语句> #注意缩进
<参数>表示循环的次数
<变量>表示每次循环的计数,0
到<参数> - 1
即次数 - 1
range()函数
产生循环计数序列
-
range (N)
产生0
到N-1
的整数序列,共N
个
range(5) #0, 1, 2, 3, 4
-
range (N, M)
产生M
到N-1
的整数序列,共N-M
个
range(2, 5) #2, 3, 4
down()函数
如果我们是一个文件式的描写方法,若以turtle.down()
作为turtle
绘制的最后一部分,那么程序运行之后不会退出,需要手动关闭窗体退出,去掉则程序自动退出