01. turtle海龟画图
1. turtle库入门
turtle,即:海龟,是Python中一种 绘图工具 库,也叫 海龟库。默认是从原点(0,0)位置开始画图。
法名 | 返回值说明 |
---|---|
.forward(100) | 面朝当前方向前进100个像素 |
.back(100) | 面朝当前方向后退100个像素 |
.done() | 结束画画 |
# 引入海龟库,并给海龟取别名为t
import turtle as t
# 向前(默认向右)画100步
t.forward(100)
# 结束画画
t.done()
结果:
2. 角度的概念
在绘制图形时,有时需要转向,那么就需要调整前进箭头的指向(角度)即可
方法名 | 方法说明 |
---|---|
.left(90) | 左转90度,度数的取值范围:0~360 |
.right(90) | 右转90度,度数的取值范围:0~360 |
# 引入海龟库,并给海龟取别名为t
import turtle as t
# 向前100步
t.forward(100)
# 拐个弯,向左拐90度
t.left(90)
# 再向前100步
t.forward(100)
# 拐个弯,向右拐90度
t.right(90)
# 再向前100步
t.forward(100)
# 结束画画
t.done()
结果:
3. 设置箭头造型
为什么叫小海龟呢?因为箭头是可以设置为小海龟的,当然,默认是箭头
方法名 | 方法说明 |
---|---|
.shape(‘turtle’) | 召唤海龟,造型可以是:arrow、turtle、circle、square、triangle、classic |
.hideturtle() | 绘图结束后,隐藏箭头 |
# 引入海龟库,并给海龟取别名为t
import turtle as t
# 造型设置为海龟
t.shape('turtle')
# 前进100个像素
t.forward(100)
# 隐藏海龟
# t.hideturtle() #这行代码如果执行,海龟就会隐藏,这里我们注释代码了
# 结束画画
t.done()
结果:
02. 绘制多种图形
1. 正方形
如图:
分析:正方形四条边相等,内角和为360度,拐弯的角度为:360 / 4 = 90°,参考代码如下:
import turtle as t # 引入海龟库,并给海龟取别名为t
t.shape('turtle') # 召唤海龟
t.forward(100) # 画第一条边
t.left(90) # 左拐90度
t.forward(100) # 画第二条边
t.left(90)
t.forward(100) # 画第三条边
t.left(90)
t.forward(100) # 画最后一条边
t.done() # 结束画画
2. 等边三角形
如图:
分析:等边三角形三条边相等,内角和为180度,所以每一个内角为180/3=60度,外角为120度
import turtle as t # 引入海龟库,并给海龟取别名为t
t.shape('turtle') # 召唤海龟
t.forward(100) # 前进100个像素(第一条边)
t.right(120) # 右拐120度
t.forward(100) # 前进100个像素(第二条边)
t.right(120) # 右拐120度
t.forward(100) # 前进100个像素(第三条边)
t.done() # 结束画画
3. 圆
圆的绘制,有自己单独的方法:.circle()
方法名 | 方法说明 |
---|---|
.circle(100) | 绘制一个圆 。100是半径,若半径>0,左拐画圆;若半径<0,右拐画圆 |
- 圆圈:
import turtle as t # 引入海龟库,并给海龟取别名为t
t.shape('turtle') # 召唤海龟
t.circle(100) # 左拐画一个半径100的圆
t.done() # 结束画画
思考:画一个小雪人,小圆半径50,大圆半径100,如图所示:
方法一:
import turtle as t
t.shape('turtle')
t.circle(50) #左拐画半径50的圆
t.circle(-100) #右拐画半径100的圆
方法二:
import turtle as t
t.shape('turtle')
t.circle(50)
t.right(180) #海龟向右旋转180度
t.circle(100)
4. 五角星
如图:
分析:五角星的五个内角和为180度,所以每一个内角为180/5=36度,外角为144度
import turtle as t
t.shape('turtle')
import turtle as t # 引入海龟库,并给海龟取别名为t
t.shape('turtle') # 召唤海龟
t.forward(100) # 前进100个像素
t.right(144) # 右拐144度
t.forward(100)
t.right(144)
t.forward(100)
t.right(144)
t.forward(100)
t.right(144)
t.forward(100)
t.done() # 结束画画
03. 画笔设置
1. 画笔设置
海龟库绘制时的线条是可以设置的,例如画笔的颜色,方法名如下:
方法名 | 方法说明 |
---|---|
.pencolor(‘red’) | 设置画笔颜色,例如红色 |
import turtle #导入海龟图库
turtle.shape('turtle') #召唤海龟
turtle.pencolor("red") #画笔颜色
turtle.circle(100) #半径100的圆
turtle.done() #结束画画
除此之外,我们还可以设置画笔的粗细,方法如下:
方法名 | 方法说明 |
---|---|
.pensize(s) | 设置画笔粗细,最小值1 |
import turtle #导入海龟图库
turtle.shape('turtle') #召唤海龟
turtle.pencolor("red") #画笔颜色
turtle.pensize(20) #画笔粗细
turtle.circle(100) #半径100的圆
turtle.done() #结束画画
2. 填充设置
如何在绘制好的封闭区域进行填充颜色呢?方法如下:
方法名 | 方法说明 |
---|---|
.fillcolor(‘red’) | 设置填充的颜色 ,例如红色 |
.begin_fill() | 在需要填充的封闭区域前设置 |
.end_fill() | 在需要填充的封闭区域后设置 |
import turtle
turtle.shape('turtle')
turtle.begin_fill() #开始填充
turtle.circle(100) #画圆
turtle.fillcolor("orange") #填充颜色:橙色
turtle.end_fill() #结束填充
turtle.done()
3. 画布设置
画布:绘图的区域,我们可以设置它的大小和初始位置。
方法名 | 方法说明 |
---|---|
.screensize(width,height,bg) | 设置画布的大小【默认大小为(400,300)】 |
上面参数 | 参数说明 |
width | 宽 |
height | 高 |
bg | 背景颜色 |
import turtle
turtle.screensize(200,200,'green') #设置画布大小
结果:
04. 抬笔和落笔
1. 坐标的概念
默认情况下,海龟绘图在屏幕原点(0,0)位置开始。我们可以设置对应坐标让其在指定位置绘制.
方法名 | 说明 |
---|---|
.goto(x, y) | 到达指定坐标(x,y) |
import turtle as t #导入turtle海龟库,并给turtle起别名,叫t
t.circle(100) #半径100的圆
t.goto(0, 50) #将画笔在y轴上移50的位置
t.circle(50) # 半径50的圆
t.done() #结束画画
- 虽然,我们绘制出了同心圆,但暴露了一个问题:当绘制第二个圆时,笔头划过路过的区域,并没有抬笔,此时,我们需要通过抬笔和落笔来解决。
2. 抬笔与落笔
每次当笔头要位移绘制时,我们需要将笔头抬起,然后再绘制处再落笔即可。
方法名 | 说明 |
---|---|
.penup() | 设置画笔抬起,此时无法绘制内容 |
.pendown() | 设置画笔落下,此时可以绘制内容 |
import turtle as t #导入turtle海龟库,并给turtle起别名,叫t
t.circle(100) #半径100的圆
t.penup() #抬笔
t.goto(0, 50) #将画笔在y轴上移50的位置
t.pendown() #落笔
t.circle(50) # 半径50的圆
t.done() #结束画画
画图案例练习:
- 案例演练1:
如图:
分析:圆的半径:200/2 = 100,参考代码如下:
import turtle as t
t.circle(100)
t.penup() #抬笔
t.goto(200, 0) #移动到指定坐标位置
t.pendown() #落笔
t.circle(100)
t.done()
案例演练2:美国盾牌
如图:
分析:由外到里,逐个画出(6步),如下:
1.画最外层的红圈
具体做法:画一个半径200的圆,起点坐标(0, -200),画笔颜色:红色;填充色为:红色
2.白色圆圈
具体做法:画一个半径150的圆,起点坐标 (0, -150),画笔颜色:白色;填充色为:白色
3.里面的红圈
具体做法:画一个半径100的圆,起点坐标(0, -100),画笔颜色:红色;填充色为:红色
4.蓝色圈
具体做法:画一个半径50的圆,起点坐标(0, -50),画笔颜色:蓝色;填充色为:蓝色
5.五角星
具体做法:画一个步长为80的五角星,起点坐标 (-40, 10),画笔颜色:白色;填充色为:白色
6.收尾工作
具体做法:
(1)隐藏箭头 hideturtle
(2)结束画画 done
import turtle as t
# 一、最外层的红圈
t.penup()
t.goto(0, -200) #移动到指定坐标
t.pendown()
t.pencolor('red') # 画笔颜色:红色
t.fillcolor('red') # 填充为红色
t.begin_fill() # 开始填充
t.circle(200)
t.end_fill() # 结束填充
# 二、白色圈
t.penup()
t.goto(0, -150)
t.pendown()
t.pencolor('white')
t.fillcolor('white')
t.begin_fill()
t.circle(150)
t.end_fill()
# 三、里面的红圈
t.penup()
t.goto(0, -100)
t.pendown()
t.pencolor('red')
t.fillcolor('red')
t.begin_fill()
t.circle(100)
t.end_fill()
# 四、蓝色圈
t.penup()
t.goto(0, -50)
t.pendown()
t.pencolor('blue')
t.fillcolor('blue')
t.begin_fill()
t.circle(50)
t.end_fill()
# 五、五角星
t.penup()
t.goto(-40, 10)
t.pendown()
t.pencolor('white')
t.fillcolor('white')
t.begin_fill()
t.forward(80) # 第一条边
t.right(144)
t.forward(80) # 第二条边
t.right(144)
t.forward(80) # 第三条边
t.right(144)
t.forward(80) # 第四条边
t.right(144)
t.forward(80) # 第五条边
t.end_fill()
# 六、收尾工作
t.hideturtle() # 隐藏箭头
t.done() #结束画画
05. 画点
方法名 | 说明 |
---|---|
.dot(r,c) | 绘制一个指定直径和颜色的圆点 |
上面参数 | 参数说明 |
r | 直径 |
c(可省略) | 颜色 |
举例:
import turtle as t
t.dot(400, 'green') # 直径400,绿色圆点
t.hideturtle() # 隐藏箭头
t.done()
结果:
1. 美国盾牌
- 要求:用dot实现
- 分析:由外到里,逐个画出(3步),如下:
【1】.画出所有圆圈
具体做法:
(1)先画最外圈的圆:直径400,红色圆点
(1)第二个圆:直径300,白色圆点
(1)第三个圆:直径200,红色圆点
(1)最小的圆:直径100,蓝色圆点
【2】.五角星
具体做法:画一个步骤为80的五角星,起点坐标 (-40, 10),画笔颜色:白色;填充色为:白色
【3】.收尾工作
具体做法:
(1)隐藏箭头 hideturtle
(2)结束画画 done
import turtle as t
# 一、四个圆圈
t.dot(400, 'red') # 直径400,红色圆点
t.dot(300, 'white') # 直径300,白色圆点
t.dot(200, 'red') # 直径200,红色圆点
t.dot(100, 'blue') # 直径100,蓝色圆点
# 二、五角星
t.penup()
t.goto(-40, 10)
t.pendown()
t.pencolor('white')
t.fillcolor('white')
t.begin_fill()
t.forward(80) # 第一条边
t.right(144)
t.forward(80) # 第二条边
t.right(144)
t.forward(80) # 第三条边
t.right(144)
t.forward(80) # 第四条边
t.right(144)
t.forward(80) # 第五条边
t.end_fill()
# 三、收尾工作
t.hideturtle() # 隐藏箭头
t.done() # 结束画画
结果:
2. 画人脸
import turtle as t
#圆脸
t.penup()
t.goto(0,-200)
t.pendown()
t.circle(200)
#左眼
t.penup()
t.goto(-100,50)
t.pendown()
t.dot(40,'blue')
#右眼
t.penup()
t.goto(100,50)
t.pendown()
t.dot(40,'blue')
#鼻子
t.penup()
t.goto(0,50)
t.pendown()
t.circle(-50,steps=3)
#画嘴
t.penup()
t.goto(-150,-70)
t.pendown()
t.goto(0,-170)
t.goto(150,-70)
# 结束画画
t.done()