《Python趣味工具》——自制emoji(4)计算机二级考试题

2023-09-20 16:40:04

前面我们学习了如何制作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,可是小何时间仓促只完成了微笑部分,你能仿照微笑部分的代码完成替小何难过部分的代码吗?

你需要完成:

  1. 参考emoji_1( )函数的实现步骤,完成emoji_2( )函数的实现

  2. 首先你需要将画笔移动到((-70,-80)

  3. 其次你需要将画笔向右旋转120度

  4. 将画笔粗细设置为5

  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绘制一朵玫瑰花,送给你身边想要表白的人吧🥰

你需要完成:

  1. 参考注释完成第二片花瓣的绘制

  2. 参考注释完成第二片叶子的绘制

效果图如下所示:
在这里插入图片描述
示例代码如下:

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库绘制类似斯洛克形状图案,效果图如下:
在这里插入图片描述
你需要完成的是:

  1. 完成drawCircle( )函数,圆的半径为20,画完后画笔前进40

  2. 定义一个按照行画圆的函数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()


在这里插入图片描述

更多推荐

企业中 Docker 的 Swarm 使用及作用详解

企业中Docker的Swarm使用及作用详解本文将详细介绍企业中Docker的Swarm使用及其在企业中的作用。通过使用Java代码示例,我们将演示Swarm的基本概念、创建Swarm集群以及部署和管理服务等操作。Docker的Swarm功能可帮助企业实现容器编排和集群管理,提供高可用性、可伸缩性和负载均衡等特性。在当

【数据结构】结构实现:顺序存储模式实现堆的相关操作

🚩纸上得来终觉浅,绝知此事要躬行。🌟主页:June-Frost🚀专栏:数据结构🔥该文章着重讲解了使用顺序结构实现堆的插入和删除等操作。目录:🌍二叉树的顺序结构🔭堆🌏代码实现✉️堆的插入✉️堆的删除✉️其他部分❤️结语🌍二叉树的顺序结构二叉树的顺序存储是指将二叉树中的所有节点按照一定的顺序(一层一层)存储

作为公司测开岗的面试官,我是怎么选人的....

最近一段时间面试了不少人,主要是一些测试开发岗,中高级的初级的也都有;也有一些偏业务测试岗的候选人。总结出了一些方法论,或者说更多的是个人作为面试官所遵守的一套面试准则。1.什么是面试?面试不仅仅是你问我答,更多的是一场信息交流,也是一个双方学习的过程。你作为面试官,应聘者的简历要仔细对待,这也是对人家的尊重。从TA的

怒刷LeetCode的第4天(Java版)

#【中秋征文】程序人生,中秋共享#目录第一题题目来源题目内容解决方法方法一:遍历字符串方法二:有限状态机(FiniteStateMachine)方法三:正则表达式第二题题目来源题目内容解决方法方法一:反转数字比较第三题题目来源题目内容解决方法方法一:动态规划方法二:递归回溯第一题题目来源8.字符串转换整数(atoi)-

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录云原生架构:重新定义应用开发和部署什么是云原生架构?为什么云原生架构重要?1.弹性和伸缩性2.故障隔离3.更快的交付4.资源利用率5.多云支持云原生架构的实践步骤1:容器化步骤2:微服务步骤3:自动化运维自动化运维:云计算的关键驱动力什么是自动化运维?为什么自动化运维重要?1.复杂性管理2.资源利用率3.错误率

【汇编】微处理器

【汇编】微处理器文章目录【汇编】微处理器1、微处理器概念1.1关键词1.2分类2、微处理器结构2.1寄存器2.2寄存器&汇编助记符2.3寄存器组成结构3、地址空间3.1存储空间3.1.1虚拟空间(编程空间)3.1.2线性空间3.2I/O空间4、工作模式4.1实地址模式4.2保护虚拟地址模式4.3虚拟86模式1、微处理器

中秋特辑:Java事件监听实现一个猜灯谜小游戏

众所周知,JavaSwing是Java中关于窗口开发的一个工具包,可以开发一些窗口程序,然后由于工具包的一些限制,导致Java在窗口开发商并没有太多优势(当然也有一些第三方的工具包也很好用),不过,在JavaSwing中关于事件的监听机制是我们需要重点掌握的内容。何为事件监听在Java中,事件监听(EventListe

Spring之微服务架构与Spring Cloud

微服务架构与SpringCloud微服务架构与SpringCloud摘要引言词汇解释详细介绍微服务架构SpringCloud核心组件示例代码:注释:注意事项理解微服务架构的优势详细介绍什么是微服务架构?微服务架构的优势1.可扩展性(Scalability)2.灵活性和快速开发(FlexibilityandRapidDe

Spring高手之路11——BeanDefinition解密:构建和管理Spring Beans的基石

文章目录1.探索BeanDefinition1.1官方文档对BeanDefinition的解读1.2BeanDefinition关键方法剖析1.3BeanDefinition部分方法的实际运用1.4BeanDefinition深层信息结构梳理2.BeanDefinition构造体系解析2.1BeanDefinition

Java开发 - 探寻Spring的秘密

前言Spring是企业级J2EE一站式解决方案,提供了整个项目的表现层、业务层、持久层,而且,它的生态特别完善,可以和其他框架无缝对接,现在做Java的哪个项目里没有Spring的说出不去都不信。但往往我们开发者只重视项目是不是run起来了,而忽略了去了解Spring本身,所以很多开发者仅仅是停留在了使用的层次。博主也

JDK8新特性

Lembda表达式lembda表达式是一个简洁、可传递的匿名函数,实现了把代码块赋值给一个变量的功能是我认为jdk1.8中最让人眼前一亮的特性(我没用过其他函数式的语言)在了解表达式之前,我们先看两个概念函数式接口含有且仅含有一个抽象方法,Lembda表达式需要借助函数式接口实现。通常来说我们在这个接口定义上加上@Fu

热文推荐