1.课前实例
1.1 蟒蛇绘制
import turtle as t #turtle库取别名为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()
2024-08-21 20-39-18
演示如上
1.2 过程分析
基本流程:调用turtle海龟库->设置画布(主窗体的大小和位置)->提起画笔->移动到画布上的一点->放下画笔->设置画笔的线条粗细于颜色等->改变画笔等画点方向->进行绘制
其涉及到的函数:
- turtle.setup(宽,高,指定窗口左上角的x坐标,指定窗口左上角的y坐标)
- turtle.penup():用于将画笔抬起,即“提起”画笔,将使画笔停止绘制,并将其移动到新的位置,而不在移动过程中绘制任何线条
- turtle.fd(移动的距离),距离单位是像素,向前/后(正数/负数)移动一定的距离,以当前方向和速度移动
- turtle.pendown():用于将画笔放下,以便在移动时在屏幕上绘制线条
- turtle.pensize():设置线条的粗细
- turtle.pencolor(color) :color为颜色字符串或者r,g,b值
- turtle.seth(angle):用于改变海龟的朝向,它接受一个参数,表示要设置的角度。参数可以是0到360之间的任意值,其中0表示正右方,90表示正上方,180表示正左方,270表示正下方
- 循环语句:按照一定次数循环执行一组语句 <变量>表示每次循环的次数,0到<次数>-1
- for <变量> in range(<次数>):
- <被循环执行的语句>
- range()函数:产生循环计数序列 range(N) 产生0到N-1的整数序列,共N个
- range(N,M) 产生N到M-1的整数序列,共N-M个
- turtle.circle(圆半径,弧形角度,圆弧的步数):圆半径为正值圆心在画笔的左侧,圆半径为正值圆心在画笔的右侧,当无该弧形角度参数或参数为None时,绘制整个圆形相当于默认取值360,圆弧的步数,默认值为 360。步数越多,圆弧越平滑。一般不用。
- turtle.done():用于保持绘制窗口的显示,直到用户手动关闭窗口或按下键盘上的任意键
1.3 举一反三
通过改变程序参数:
Python蟒蛇的颜色:黑色、白色、七彩色...(改变pencolor函数的值)
Python蟒蛇的长度:1节、3节、10节...
Python蟒蛇的方向:向左走、斜着走...
进而扩展:
圆形绘制、五角星绘制、国旗绘制、机器猫绘制
绘制随机彩色蟒蛇:加一个随机生成函数,来随机生成RGB颜色
import random # 导入随机数模块实现随机颜色的功能
import turtle
turtle.colormode(255) # 把颜色表示法取值的模式从[0-1]之间改成[0-255]
#定义一个生成颜色的模块
def colorchoose():
a, b, c = random.randrange(0, 256), random.randrange(0, 256), random.randrange(0, 256)
color = (a, b, c)
return color #返回值是一个rgb颜色
turtle.setup(650, 350, 200, 200)
turtle.pu()
turtle.fd(-250)
turtle.pendown()
turtle.width(25)
turtle.seth(-40)
for i in range(4):
turtle.pencolor(colorchoose()) # 调用模块 随机生成rgb颜色
turtle.circle(40, 80)
turtle.pencolor(colorchoose()) # 调用模块 随机生成rgb颜色
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库基本介绍及用法
turtle(海龟)库是turtle绘图体系的python实现
python计算生态=标准库+第三方库
- 标准库:随解释器直接安装到操作系统中的系统中的功能模块
- 第三方库:需要经过安装才能使用的功能模块
- 库Library,包Package,模块Module,统称为模块
2.1 turtle绘图窗口布局
turtle的绘图窗口——turtle的一个画布空间,最小的单位是像素
设置窗体大小及位置turtle.setup(width, height, startx, starty),后两个可选,setup非必须
如如下所示
2.2 turtle空间坐标体系
- 将画笔移动到指定的坐标位置(移动时有痕迹):turtle.goto(x, y),其中x和y是要移动到的坐标位置,可以是整数或浮点数,x,y为绝对坐标
如下程序:
import turtle
turtle.goto(100, 100)
turtle.goto(100, -100)
turtle.goto(-100, -100)
turtle.goto(-100, 100)
turtle.goto(-0, 0)
与其相关的还有:
turtle.penup(): 抬起画笔,移动时无痕迹。
turtle.pendown(): 落下画笔,移动时有痕迹。
turtle.pensize(width): 设置画笔宽度。
turtle.pencolor(color): 设置画笔颜色,可以是颜色字符串或RGB值。
- 海龟坐标
以海龟的头朝向为前进方向
涉及到的函数:
turtle.fd(x)向海龟前进方向前进x像素
turtle.bk(x)向海龟后退方向后退先x像素
turtle.circle(r, angle):)以左侧距离海龟距离为r的一点为圆心做曲线运动,运动弧度为angle,例:Turtle.circle(20, 90),是画四分之一个圆
2.3 turtle角度坐标体系
1) 设置海龟的朝向角度turtle.seth(角度),角度在0到360之间,只改变方向,不前进,绝对角度
如下所示改变海龟朝向角度
2)海龟角度
turtle.left(angle):让小海龟向左转动一个角度angle
turtle.right(angle):让小海龟向右转动一个角度angle
如下程序:
from turtle import *
left(45)
fd(150)
right(135)
fd(300)
left(135)
fd(150)
2.4 RGB色彩体系
RGB色彩模式:由三种颜色构成的万物色,turtle.colormode(mode)默认是小数形式,可以切换为整数值,1.0:RGB小数值模式,255:RGB整数值模式
RGB指红蓝绿三个通道的颜色组合,覆盖视力所能感知的所有颜色,RGB每色取值范围0-255整数或0-1小数
常用的RGB色彩如下表
3. turtle程序语法元素分析
3.1 库引用和import
库引用:扩充python程序功能的方式
几种库引用方法:
①import 库名:导入整个库文件
import 库名[as 别名]:导入整个库文件,并指定库别名
<库名/别名>.<函数名>(<函数参数>)
②from 库名 import [函数名]:导入指定文件的函数
from 库名 import *:导入指定文件所有函数
<函数名>.(<函数参数>)
③from 库名 import函数名[as 函数别名]:导入指定文件的函数,并指定函数别名
3.2 turtle画笔控制函数
- 画笔操作后一直有效,一般成对出现
turtle.penup() 别名 turtle.pu)
抬起画笔,海龟在飞行
turtle.pendown() 别名 t 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运动控制函数
- 控制海龟行进:走直线 & 走曲线
直线:turtle.forward(d)) 别名 turtle.fd(d) 向前行进,海龟走直线
d:行进距离,可以为负数
曲线:turtle.circle(r, extent=None)根据半径r绘制extent角度的弧形
r:默认圆心在海龟左侧~距离的位置- extent:绘制角度,默认是360度整圆
- 画笔设置后一直有效,直至下次重新设置
turtle.forward(d) 别名 turtle.fd(d) 向前行进,海龟走直线
d:行进距离,可以为负数
3.4 turtle方向控制函数
- 控制海龟面对方向:绝对角度& 海龟角度
turtle.setheading(angle) 别名 turtle.seth(angle) 改变行进方向,海龟走角度
angle:行进方向的绝对角度
- 控制海龟面对方向:绝对角度&海龟角度
turtle.left(angle) 海龟向左转
turtle.right(angle) 海龟向右转
angle:在海龟当前行进方向上旋转的角度
详细其他函数见其他作者帖子:https://huaweicloud.csdn.net/63806ca0dacf622b8df87e66.html