前面我们学习了如何制作emoji,相信你也是有很多想法了吧!今天我们就来看看几道计算机二级考试真题。
1. 绘制套圈
使用turtle库的circle()函数和seth()函数绘制套圈。
最小的圆圈半径为10像素,不同圆圈之间的半径差是40像素。
ps:注意要和题目要求的圆形方向一致哦~可以在绘制前先将方向调整为90度。
示例代码如下:
# TODO 导入turtle中的全部函数
from turtle import *
# 使用penup()函数抬起画笔
penup()
# 使用goto()函数移动到(100,0)的位置开始绘制
goto(100,0)
# 将画笔粗细设置为5
pensize(5)
pencolor("black")
# 使用pendown()函数落下画笔
pendown()
seth(90)
# 其他的部分就靠你完成啦~
def draw_circle(r):
circle(r,360)
for i in range(4):
draw_circle(i*40+10)
2. 熬夜加班后的emoji
刚开始尝试实习的小何感受到程序猿996生活的不容易,她想用课上刚学的turtle画出熬夜加班后的emoji,我们一起来看看实现这个emoji吧😛
你需要做的是:
1.补充完成绘制眼白的eys_white( )函数
2.补充完成绘制眼珠的eys_black( )函数
下面是你绘制emoji时可以参考的坐标表:
示例代码如下:
# 导入turtle中的全部函数
from turtle import *
# 使用speed()函数设置速度,参数调整为20
speed(20)
# 定义draw_face()函数绘制脸部
def draw_face():
# 抬起画笔
penup()
# 移动到坐标点为(-120,0)的地方
goto(-120,0)
# 落笔
pendown()
# 将画笔颜色设置为黑色"black"
pencolor("black")
# 将画笔粗细设置为10
pensize(10)
# 调整海龟朝向-90度方向
seth(-90)
# 开始填充颜色
begin_fill()
# 画圆,圆的半径为150,圆心角为360度
circle(150,360)
# 填充颜色为"gold"
fillcolor("gold")
# 停止填充颜色
end_fill()
# 定义draw_mouth() 函数绘制嘴巴
def draw_mouth():
pensize(10)
# 抬起画笔
penup()
# 移动到坐标点为(4,-77)的位置
goto(4,-77)
# 落笔
pendown()
# 调整海龟朝向0度方向
seth(0)
# 向前移动30步
forward(30)
# 定义eys_white()函数绘制眼白
def eyes_white():
# 设置画笔颜色为黑色
pencolor("black")
# 使用penup()函数抬起画笔
penup()
# 调整海龟朝向90度方向
seth(90)
# 移动到坐标点为(0,20)的位置
goto(0,20)
# 使用pendown()函数落笔
pendown()
# 使用fillcolor()函数设置填充颜色为"white"
fillcolor("white")
# 使用begin_fill()开始填充
begin_fill()
# 使用circle()函数绘制一个半径50的圆
circle(50,360)
# 使用end_fill()结束
end_fill()
# TODO 使用penup()函数抬笔
penup()
# TODO 移动到坐标点为(140,20)的位置
goto(140,20)
# TODO 使用pendown()函数落笔
pendown()
# TODO 使用begin_fill()开始填充
begin_fill()
# TODO 使用circle()函数绘制一个半径50的圆
circle(50,360)
# TODO 使用end_fill()结束
end_fill()
# 使用penup()函数抬笔
penup()
# 定义一个eyes_black()函数绘制黑眼珠
def eyes_black():
# 移动到坐标点为(-40,20)的位置
goto(-40,20)
# 使用pendown()函数落笔
pendown()
# 使用pensize()函数设置画笔粗细为15
pensize(15)
# 使用fillcolor将填充颜色设置为黑色
fillcolor("black")
# 使用begin_fill()函数开始填充
begin_fill()
# 使用circle()函数绘制一个半径为10,圆心角为360度
circle(10,360)
# 使用end_fill()结束填充
end_fill()
# TODO 使用penup()函数抬笔
penup()
# TODO 移动到坐标点为(100,20)的位置
goto(100,20)
# TODO 使用pendown()函数落笔
pendown()
# TODO 使用begin_fill()函数开始填充
begin_fill()
# TODO 使用circle()函数绘制一个半径为10,圆心角为360度
circle(10,360)
# TODO 使用end_fill()结束填充
end_fill()
# 使用hideturtle()函数隐藏画笔
hideturtle()
# 调用draw_face()函数画脸
draw_face()
# 调用draw_mouth()函数画嘴巴
draw_mouth()
# 调用eyes_white()函数画白眼珠
eyes_white()
# 调用eyes_black()函数画黑眼珠
eyes_black()
3. 螺旋正方形:
计算机二级真题演练(中)
使用turtle库的forward( )函数和seth( )函数绘制螺旋状的正方形,正方形边长从10像素开始,第一条边从0度方向开始,效果如下图所示:
你需要完成的是:
1.定义常量d=0,k=10
2.从初始位置(0,0)开始绘制并设置画笔粗细为5
3.绘制图像时每次forward函数参数为k,k递增5
4.绘制图像时每次seth函数参数为d,d递增91
示例代码如下:
# TODO 利用from.....import....导入turtle模块所有函数
from turtle import *
# TODO 定义常量d=0,k=10
d=0
k=10
# 确定绘制初始位置(0,0)
goto(0,0)
# 设置画笔粗细为5
pensize(5)
# TODO 画出图像
for j in range(10):
for i in range(4):
# TODO 调用forward函数绘制,参数为k
forward(k)
# TODO d递增91
d+=91
# TODO 调用seth函数绘制,参数为d
seth(d)
# TODO k递增5
k+=5
4. 脑力测试图:
最近学校正在开展全校范围内的“寻找最强大脑”活动,社团负责人小波想邀请你也参与到他们的选拔策划中,为选拔者绘制一幅脑力测试图
你需要完成的是在300次循环中:
1.每次线条绘制向前进的距离是2*x
2.每次交替使用colors中的颜色(可以参考tips哦~)
3.每次画完后向左旋转91度以形成交叉螺旋
绘制完成后的效果图如下:
示例代码如下:
# TODO 利用from.....import....导入turtle模块所有函数
from turtle import *
# 设置画笔粗细为4
pensize(4)
# 设置四种颜色
colors = ["red","yellow","purple","blue"]
# TODO 开始绘制
for x in range(300):
# 隐藏画笔
hideturtle()
# 设置画笔移动速度
speed(300)
# TODO 每次线条绘制向前进的距离是2*x
forward(2*x)
# TODO 改变颜色
pencolor(colors[x%4])
# TODO 向左旋转91度形成交叉螺旋
left(91)
5. 动态emoji
刚学完emoji不久的小何想要自己尝试完成制作完成一个动态emoji
小何决定从简单做起,制作一个微笑和难过交替进行的emoji,可是小何时间仓促只完成了微笑部分,你能仿照微笑部分的代码完成替小何难过部分的代码吗?
你需要完成:
-
参考emoji_1( )函数的实现步骤,完成emoji_2( )函数的实现
-
首先你需要将画笔移动到((-70,-80)
-
其次你需要将画笔向右旋转120度
-
将画笔粗细设置为5
-
最后绘制一个半径为80,圆心角为-120度的圆,完成后将画笔调制0度
绘制效果如下图所示:
示例代码如下:
from turtle import *
import time
# 定义绘制脸部函数
def draw_face():
speed(6)
pensize(4)
# 画圆脸
pencolor('orange')
penup()
goto(0, -150)
pendown()
begin_fill()
fillcolor('yellow')
circle(150)
end_fill()
hideturtle()
# 定义绘制眼睛函数
def draw_eyes():
pensize(2)
# 画左眼睛
pencolor('brown')
penup()
goto(60, 45)
pendown()
begin_fill()
circle(25)
fillcolor('white')
end_fill()
pencolor('black')
begin_fill()
circle(13)
fillcolor('black')
end_fill()
# 画右眼睛
pencolor('brown')
penup()
goto(-60, 45)
pendown()
begin_fill()
circle(25)
fillcolor('white')
end_fill()
pencolor('black')
begin_fill()
circle(13)
fillcolor('black')
end_fill()
hideturtle()
# 定义emoji_1函数,绘制微笑表情
def emoji_1():
draw_face()
draw_eyes()
pencolor('brown')
penup()
goto(-70,-60)
pendown()
right(65)
pensize(5)
circle(75,130)
seth(0)
hideturtle()
# 定义emoji_2函数,绘制难过表情
def emoji_2():
draw_face()
draw_eyes()
pencolor('brown')
# TODO 抬起画笔
penup()
# TODO 将画笔移动到(-70,-80)
goto(-70,-80)
# TODO 落下画笔
pendown()
# TODO 画笔向右旋转120度
right(120)
# TODO 画笔粗细设置为5
pensize(5)
# TODO 绘制一个半径为80,圆心角为-120度的圆
circle(80,-120)
# TODO 将画笔调至0度
seth(0)
# 隐藏画笔
hideturtle()
i = 1
while i<=10:
tracer(0)
emoji_1()
time.sleep(1)
update()
tracer(0)
emoji_2()
time.sleep(1)
update()
i = i + 1
5. 一朵玫瑰花
送你一朵玫瑰花!快用你刚学会的turtle绘制一朵玫瑰花,送给你身边想要表白的人吧🥰
你需要完成:
-
参考注释完成第二片花瓣的绘制
-
参考注释完成第二片叶子的绘制
效果图如下所示:
示例代码如下:
from turtle import *
# 设置初始位置
penup()
left(90)
forward(130)
pendown()
right(90)
# 绘制花蕊
fillcolor("red")
begin_fill()
circle(10,180)
circle(25,110)
left(50)
circle(60,45)
circle(20,170)
right(24)
forward(30)
left(10)
circle(30,110)
forward(20)
left(40)
circle(90,70)
circle(30,150)
right(30)
forward(15)
circle(80,90)
left(15)
forward(45)
right(165)
forward(20)
left(155)
circle(150,80)
left(50)
circle(150,90)
end_fill()
# 绘制第一片花瓣
left(150)
circle(-90,70)
left(20)
circle(75,105)
seth(60)
circle(80,98)
circle(-90,40)
# 绘制第二片花瓣
# TODO 向左旋转180度
left(180)
# TODO 绘制半径为90,圆心角为40度的圆
circle(90,40)
# TODO 绘制半径为-80,圆心角为98度的圆
circle(-80,98)
seth(-83)
# 绘制第一片叶子
forward(30)
left(90)
forward(25)
left(45)
fillcolor("green")
begin_fill()
circle(-80,90)
right(90)
circle(-80,90)
end_fill()
right(135)
forward(30)
left(180)
forward(55)
left(90)
forward(30)
# 绘制第二片叶子
right(90)
right(45)
fillcolor("green")
begin_fill()
# TODO 绘制半径为80,圆心角为90度的圆
circle(80,90)
# TODO 向左旋转90度
left(90)
# TODO 绘制半径为80,圆心角为90度的圆
circle(80,90)
end_fill()
left(135)
# TODO 画笔前进30
forward(30)
# TODO 向左旋转180度
left(180)
# TODO 画笔前进30
forward(30)
# TODO 向右旋转90度
right(90)
# TODO 绘制半径为130,圆心角为60度的圆
circle(130,60)
7. 斯洛克形状图案:
使用turtle库绘制类似斯洛克形状图案,效果图如下:
你需要完成的是:
-
完成drawCircle( )函数,圆的半径为20,画完后画笔前进40
-
定义一个按照行画圆的函数drawRowCircle(n),请先点击提示进行学习,参数n为绘制的行数。
我们可以通过循环来写drawRowCIrcle( )函数哦~,快来看看我们是怎么做到的吧
1.创建循环for j in range(n,1,-1)从上至下依次绘制斯洛克的每一行,此处参数意义为从n行画到1行,每次递减1行
2.创建循环 for i in range(j)调用drawCircle( )函数从左至右依次绘制每一行的圆
注意:我们来看看range函数的新用法吧
range(start, stop[, step])
参数说明:
start: 计数从 start 开始, 默认是从 0 开始, 例如range(5)等价于range(0,5) ;
stop: 计数到 stop 结束, 但不包括 stop, 例如:range(0,5) 是[0, 1, 2, 3, 4]没有5 ;
step: 步长, 默认为1, 例如: range(0,5) 等价于 range(0, 5, 1) ;
>>>range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
示例代码如下:
# 利用from.....import....导入turtle模块所有函数
from turtle import *
# 定义画圆的函数drawCircle,设置画笔粗细为5并落下画笔,绘制半径为20的圆,完成后抬起画笔前进40
def drawCircle():
pensize(5)
pendown()
# TODO 绘制半径为20的圆
circle(20)
penup()
# TODO 画笔前进40
forward(40)
# 定义按照行画圆的函数drawRowCircle(n),参数n为绘制的行数
def drawRowCircle(n):
penup()
# TODO 定义绘制的初始位置(-60,40)
goto(-60,40)
pendown()
# 绘制开始
# TODO 创建循环,从上至下依次绘制斯洛克的每一行
for j in range(n,1,-1):
# TODO 创建循环,从左至右依次绘制每一行的圆
for i in range(j):
# TODO 调用drawCircle( )函数绘制圆
drawCircle()
# TODO 前进(-j*40-20)距离,以到达下一行第一个圆绘制的位置
forward(-j*40-20)
# TODO 向右旋转90度
right(90)
# 前进40距离
forward(40)
# TODO 向左旋转90度
left(90)
# TODO 前进40距离
forward(40)
# TODO 调用drawCircle()函数
drawCircle()
# 调用drawRowCircle函数,参数为5,从上往下画
drawRowCircle(5)
hideturtle()