turtle
turtle
一、tuetle的坐标体系
-
画布在屏幕中的坐标系
-
画布的(0,0)坐标位于屏幕的左上方;最小单位为像素(px)。
-
setup()可以设置画布的大小及位置
格式:
turtle.setup(width, height, startx, starty)width: 画布长度
height: 画布宽度
startx: 画布起始的x坐标
starty: 画布起始的y坐标turtle.setup(1200, 1000, 100, 100) # 设置画布大小为 长1200px,宽1000px,起始位置为(100,100)setup()不是必须的,只有当需要改变画布大小或者坐标位置的时候使用;如果没有设置setup(),直接使用turtle进行绘图,则画布默认大小尺寸为 800px × 600px,并且位于屏幕的正中央。
setup()的四个参数,可以没有坐标信息,甚至可以连四个参数都没有。如果四个参数都没有,则按照默认尺寸和位置进行设置。
setup()前两个参数可以使用小于等于1.0的小数表示,代表的是画布的大小占整个屏幕尺寸的比例。比如setup(1.0, 1.0)代表的是按屏幕尺寸100%的比例进行设置,setup(0.5, 0.5)代表的是按照屏幕尺寸的50%比例缩小画布。
下图是setup(0.5, 0.5)的结果:
-
sscreensize()可以设置画布的大小及位置
格式:
turtle.screensize(width, height, color)width: 画布长度
height: 画布宽度
color: 画布颜色turtle.setup(1200, 1000, "blue") # 设置画布大小为 长1200px,宽1000px,颜色为蓝色
-
-
画笔在画布中的坐标系
画笔在画布中的坐标系和画布在屏幕中的坐标系是不一样的,最大的不同是画布的正中心是坐标系的原点(0,0),如下图所示:
由上图可以看出,这就是标准的xOy坐标系,横坐标为x,纵坐标为y,原点O的坐标为(0,0)。
对应的命令:turtule.goto(x, y),作用为让小海龟走到指定的坐标,单位为像素。
二、turtle的画笔体系
-
画笔的命名
在turtle中可以由多支画笔,但是每一支画笔都必须要有自己独有的名字,如果只有一支画笔,则不需要命名。
画笔命名函数:turtle.Pen()格式为
pen1 = turtle.Pen();前面的pen1为画笔的名称,命名画笔后,该画笔的所有函数需要在前面加上画笔名称,不能再使用默认的turtle前缀。pen1 = turtle.Pen() # 为画笔设置名称为pen1 pen1.goto(100,100) # 让画笔pen1移动到画布(100,100)的位置 -
画笔设置函数
-
turtle.pensize(a)
- 参数:a代表画笔的像素数
- 作用:设置画笔的粗细
- 特别说明:画笔设置粗细只改变设置后的绘图,设置前已经绘制的图形不改变
-
turtle.penup()
- 参数:无
- 作用:抬笔
- 特别说明:抬笔后,画笔的所有操作及移动都不会在画笔上留下痕迹
-
turtle.pendown()
- 参数:无
- 作用:落笔
- 特别说明:画笔落下后,才能绘制响应的图形
-
turtle.hideturtle()
- 参数:无
- 作用:隐藏小乌龟
- 特别说明:隐藏并不影响小海龟的绘图,即隐藏后小海龟还是可以绘图的
-
turtle.showturtle()
- 参数:无
- 作用:显示小乌龟
-
turtle.shape()和turtle.Turtle()
- 参数:"arrow"、"turtle"、"circle"、"square"、"triangle"、"classic"
- 作用:设置小海龟的形状
- 特别说明:默认小海龟形状为"classic";参数为字符串,所以必须要加引号
-
turtle.write(arg,move=false,align='left',font=('arial',8,'normal'))
-
参数:
①arg为需要书写的文字信息
②move为可选参数,如果move为True,则笔将移动到右下角
③align为可选参数,只能是字符串"left"、"center"、"right"之一,表示字符的对齐方式;
④font为可选参数,表示所要使用的字体。 -
作用:在小海龟当前书写文字
-
import turtle pen1 = turtle.Pen() # 设置画笔名字 pen1.pensize(5) # 设置画笔粗细 pen1.shape("turtle") # 设置画笔图形 pen1.goto(100,0) # 让画笔移动到(100,0)位置 pen1.write("python",align='left',font=('arial',20,'normal')) # 在画笔当前位置书写文字 -
-
与颜色相关的设置
-
turtle.pencolor(color)
-
参数:color代表的是画笔的颜色
-
作用:设置画笔的颜色
-
特别说明:参数color有两种表示方式。(后续所有color参数均可以使用下面的两种方式表示)
①字符串形式,如:turtle.pencolor("green"),该语句会将画笔设置为绿色
②RGB三原色模式,如:turtle.pencolor(255, 0, 0),该语句会将画笔设置为蓝色。但是在使用RGB三原色模式时,需要在前面加上turtle.colormode(255),将颜色设定为RGB模式
-
-
turtle.fillcolor(color)
- 参数:color代表是填充颜色
- 作用:设置填充颜色
- 特别说明:填充颜色需要在开始前进行声明才有效
-
turtle.color(color1, color2)
- 参数:color1代表的是画笔颜色;color2代表的是填充颜色
- 作用:同时设置画笔及填充颜色
- 特别说明:如果只有一个参数,则代表该颜色既是画笔颜色也是填充颜色
-
turtle.begin_fill()
- 参数:无
- 作用:设置填充的起始点,表示开始填充
- 特别说明:开始填充必须和结束填充成对配合使用
-
turtle.end_fill()
- 参数:无
- 作用:设置填充的终点
- 特别说明:结束填充必须和开始填充成对配合使用
-
turtle.bgcolor(color)
- 参数:color代表背景的颜色
- 作用:设置画布的背景颜色
-
三、turtle的运动体系
-
turtle的相对方向
小乌龟(画笔)在画布上是有方向的,默认的小乌龟的头部(前方)为屏幕的右侧,尾部(后方)为屏幕的左侧,小乌龟的右侧为屏幕的下方,小乌龟的左侧为屏幕的上方,如图所示:
小乌龟的方向会随着画笔方向的改变进行改变,所以,该方向为相对方向,以小乌龟的头部所朝向的前方为标准建立新的方向体系。
对应的命令有:turtle.forward(a)、turtle.backward(a)、turtle.circle(radius, extent=None, steps=None)、turtle.left(angle)、turtle.right(angle);这些命令的具体用法可以参考下边的相关函数介绍。
-
turtle的绝对方向
除了相对于小海龟头部方向的相对方向之外,turtle还有绝对方向,其特征如下:
-
绝对方向是不变的
-
绝对方向的划分如下:屏幕的右方为0°起点,也是360°终点;屏幕上方为 90°(逆时针)/ 270°(顺时针);屏幕左侧为 180° / -180°;屏幕下方为 270° / -90°
-
-
相关函数
-
turtle.goto(x, y)
- 参数:(x, y)为目标位置的x坐标及y坐标
- 作用:让小乌龟直线前进到指定坐标
-
turtle.forward(a)
- 参数:a代表移动的像素数
- 作用:让小乌龟向前移动a个像素
- 特别说明:可以简写为 turtle.fd(a)。如果a是负数,代表后退a像素
-
turtle.backward(a)
- 参数:a代表移动的像素数
- 作用:让小乌龟向后移动a个像素
- 特别说明:可以简写为 turtle.bk(a)。如果a是负数,代表前进a像素
-
turtle.left(angle)
- 参数:angle代表旋转的角度
- 作用:让小海龟向左旋转angle度
- 特别说明:参数为正,代表左转;参数为负,代表右转
-
turtle.right(angle)
- 参数:angle代表旋转的角度
- 作用:让小海龟向右旋转angle度
- 特别说明:参数为正,代表右转;参数为负,代表左转
-
turtle.circle(radius, extent=None, steps=None)
-
参数:
①radius代表的是半径,这个参数是必要的
②extent代表的是弧度的度数,如果没有,则默认为360°
③steps代表的是绘制该弧度所需用的边数
-
作用:绘制圆或者圆弧
-
-
turtle.setheading(angle)
- 参数:angle为必要参数,代表旋转到的绝对角度,参数可以为负数
- 作用:让小乌龟转到指定的绝度绝对角度
- 特别说明:可以简写为 turtle.seth()
-
turtle.speed(a)
- 参数:a的数值范围是 0-10,数字越大,速度越快,但是最快的是0而不是10,那是因为当参数为0时,turtle绘图无动画
- 作用:设定画笔的运动速度
-
turtle.dot(a)
- 参数:a为圆点的半径,单位为像素
- 作用:绘制圆点
-
turtle.home()
- 参数:无
- 作用:让小乌龟返回原点
- 特别说明:小乌龟返回原点(0,0)后,方向为初始方向,即屏幕的右方,但是画笔的颜色等设置依然保留
-
练习
(一)单选题
-
能改变画笔颜色的命令是?()
A.turtle.colormode(); B.turtle.pencolor(); C.turtle.setup(); D.tuetle.pu();
-
下列Turtle库中画笔属性说法错误的是?()
A.turtle.pensize():设置画笔的宽度
B.turtle.pencolor():设置画笔的颜色
C.turtle.speed():设置画笔的移动速度
D.turtle.distance():设置画笔的移动距离
-
下面的哪一个命令不是画笔控制的命令?()
A.tuetle.up(); B.tuetle.pd(); C.tuetle.pensize(); D.turtle.screensize()
-
turtle.speed()命令设定笔运动的速度,其参数范围是?()
A.0-10的整数; B.1-10的整数; C.0-100的整数; D.1-100的整数
-
下列哪个命令可以将整个绘制屏幕的颜色设置成黑色?()
A.turtle.screensize("black")
B.turtle.fillcolor("black")
C.turtle.bgcolor("black")
D.turtle.pencolor("black")
-
Turtle库中,用于将画笔移动到坐标(x,y)位置的命令是?()
A.turtle.go(x,y); B.turtle.go(y,x); C.turtle.goto(x,y); D.turtle.goup(x,y)
-
下面这段代码召唤了几只画笔海龟?()
import turtle pen = turtle.Pen() t = turtle.Pen() p = turtle.Pen() pen.pensize(5) pen,forward(100)A.1; B.2; C.3; D.4
-
下列程序绘制的是一个什么图形?
import turtle turtle.forward(100);turtle.left(120) turtle.forward(100);turtle.left(120) turtle.forward(100);turtle.left(120)A.等边三角形; B.正方形; C.矩形; D.圆
-
下面哪个选项不能改变turtle画笔的方向?()
A.right(); B.left(); C.bk(); D.seth()
-
执行下面代码后,走出了一个正方形形状,此时海归的面朝方向应该是往哪里?()
import turtle turtle.goto(0,0) turtle.goto(0,100) turtle.goto(100,100) turtle.goto(100,0) turtle.goto(0,0)A.水平向左; B.水平向右; C.垂直向上; D.垂直向下
-
turtle.circle(90, 180)是绘制一个什么样的图形?()
A.半径为180的扇形; B.半径为90的半圆; C.半径为90的圆形; D.半径为180的圆形
-
turtle.circle(150, steps=5)命令能绘制出以下哪个图形?()
A.直径为150像素的圆内接正五边形
B.半径为150像素的圆内接正五边形
C.半径为150像素的圆内接五角星
D.边长为150像素的正五边形
-
turtle.clear()命令的作用是?()
A.清空turtle窗口,但是turtle的位置和状态不会改变
B.清空turtle窗口,turtle的位置和状态会改变
C.清空turtle变量,但是turtle的位置和状态不会改变
D.清空turtle变量,turtle的位置和状态会改变
-
下列代码不能画出直径为10的点的是?()
A.
turtle.pensize(10);turtle.pendown()B.
turtle.dot(10)C.
turtle.begin.fill();turtle.circle(5);turtle.end_fill()D.
turtle.begin.fill();turtle.circle(10);turtle.end_fill()
(二)判断题
- turtle.speed()设置速度时,参数为10时速度最快。( )
- 使用Turtle时,画布默认坐标左上角为画布中心。( )
- Python中使用import turtle命令导入turtle库。( )
- 在Turtle库中,turtle.screensize()和turtle.setup()都能设置画布大小,但是前者默认大小为(400,300)后者默认大小为(800,600)。( )

浙公网安备 33010602011771号