在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言——LOGO语言,它的特色就是通过编程指挥一个小海龟(turtle)在屏幕上绘图。
海龟绘图(Turtle Graphics)后来被移植到各种高级语言中,Python内置了turtle库,基本上100%复制了原始的Turtle Graphics的所有功能。
收录的海龟作图的基本函数
urtleScreen类 绘图窗口定义为绘图龟的操场
函数Screen() 返回一个TurtleScreen子类的单例对象
RawTurtle(别名:RawPen) 在TurtleScreen上绘制的Turtle对象
一、移动并绘制:
1、forward() | fd() turtle.forward(distance) turtle.fd(distance) 参数:distance - 一个数字(整数或浮点数)
2、turtle.back(distance) turtle.bk(distance) turtle.backward(distance) 后退若干
3、turtle.right(angle) turtle.rt(angle) 右转角度 turtle.heading() 显示当前朝向
4、turtle.left(angle) turtle.lt(angle) 左转角度
5、turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None) 绝对移动位置
6、turtle.setx(x) turtle.sety(y) 绝对移动位置,只不过将 x,y 分开进行移动
7、turtle.setheading(to_angle) turtle.seth(to_angle) 设置朝向
8、turtle.home() 将龟移动到原点 , 坐标(0,0) , 并将其标题设置为其起始方向
9、turtle.circle(radius<半径>, extent=None<角度,范围>, steps=None<边数>) 如果半径为正,则逆时针绘制弧线,否则沿顺时针方向绘制弧线
10、turtle.dot(size=None, *color) 给出size必须>1 用颜色画出一个直径大小的圆点
11、turtle.stamp() turtle.clearstamp(stampid) 在当前乌龟位置上将海龟形状的副本印到画布上,可以通过调用clearstamp(stamp_id)将其删除
12、turtle.clearstamps(n=None) 删除所有或第一张/最后一张海龟的邮票。如果n为None,则删除所有的邮票,如果n> 0删除前n个邮票,否则如果n <0删除后n个邮票
13、turtle.undo() 撤销上一步 turtle.speed(speed=None) 画笔速度
14、turtle.position()turtle.pos() 返回(x,y)位置
15、turtle.distance(x, y=None) 以龟步单位返回从乌龟到(x,y),给定向量或给定的其他乌龟的距离
16、turtle.radians() 将角度测量单位设置为弧度。相当于度(2 * math.pi)
17、turtle.pendown() turtle.pd() turtle.down() 落笔
18、turtle.penup() turtle.pu() turtle.up() 起笔
19、turtle.pensize(width=None) turtle.width(width=None) 笔宽
20、turtle.pen(pen=None, **pendict) 小画布
21、turtle.pencolor(*args) 画笔颜色 turtle.fillcolor(*args) 填充色 turtle.color(*args) 同时设置画笔,填充颜色,可使用0~3种颜色
22、turtle.begin_fill() turtle.end_fill() 开始结束填充
23、turtle.reset() 从屏幕上删除乌龟的图纸,重新将乌龟居中并将变量设置为默认值
24、turtle.clear() 从屏幕上删除乌龟的图纸。不要移动乌龟。乌龟的状态和位置以及其他乌龟的图纸不受影响
25、turtle.write(arg, move=False, align="left", font=("Arial", 8, "normal")) 写文本 - arg的字符串表示 - 根据对齐(“左”,“中”或“右”)和给定字体在当前海龟位置,如果移动为真,笔将移动到文本的右下角。默认情况下,移动为False, font 是一个三元组(fontname<字体名>,fontsize<字体大小>,fonttype<字体类型>)
26、turtle.hideturtle() turtle.ht() 隐藏乌龟 turtle.showturtle() turtle.st() 乌龟可见
27、turtle.shape(name=None) 将龟形状设置为具有给定名称的形状
28、turtle.tilt(angle) 从当前倾斜角度旋转海龟形状,但不要改变海龟的朝向(移动方向)
29、turtle.settiltangle(angle) 无论当前的倾斜角度如何,旋转龟形指向角度指定的方向。不要改变乌龟的朝向(移动方向)
海归作图的基本方法

直接导入函数用循环方便很多

绘制五角星

或者导入模块,这样

递归绘制树

使用递归,可以绘制出非常复杂的图形。例如,下面的代码可以绘制一棵分型树:(借鉴于廖雪峰大佬的博客)
from turtle import *
# 设置色彩模式是RGB:
colormode(255)
lt(90)
lv = 14
l = 120
s = 45
width(lv)
# 初始化RGB颜色:
r = 0
g = 0
b = 0
pencolor(r, g, b)
penup()
bk(l)
pendown()
fd(l)
def draw_tree(l, level):
global r, g, b
# save the current pen width
w = width()
# narrow the pen width
width(w * 3.0 / 4.0)
# set color:
r = r + 1
g = g + 2
b = b + 3
pencolor(r % 200, g % 200, b % 200)
l = 3.0 / 4.0 * l
lt(s)
fd(l)
if level < lv:
draw_tree(l, level + 1)
bk(l)
rt(2 * s)
fd(l)
if level < lv:
draw_tree(l, level + 1)
bk(l)
lt(s)
# restore the previous pen width
width(w)
speed("fastest")
draw_tree(l, 4)
done()