2023 年 12 月认证 Python 五级真题解析
CCF 编程能力等级认证 ,英文名 Grade Examination of Software Programming ( 以
下简称 GESP ),由中国计算机学会发起并主办 ,是为青少年计算机和编程学习者提供学业
能力验证的平台。 GESP 覆盖中小学全学段,符合条件的青少年均可参加认证。 GESP 旨在
提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP 考察语言为图形化( Scratch )编程、 Python 编程及 C++ 编程,主要考察学生
掌握相关编程知识和操作能力 ,熟悉编程各项基础知识和理论框架 ,通过设定不同等级的考
试目标 ,让学生具备编程从简单的程序到复杂程序设计的编程能力 ,为后期专业化编程学习
打下良好基础。
本次为大家带来的是 2023 年 12 月份 Python 五 级认证真题解析。
一、 单选题(每题 2分,共 30 分)
1、通讯卫星在通信 ⽹ 络系统中主要起到() 的作 ⽤ 。
A. 信息过滤
B. 信号中继
C. 避免攻击
D. 数据加密
【答案】 B
【解析 】卫星通信的主要目的是通过卫星发射的信号和地面接收的信号实现用户
间的通信 ,属于中转信号功能 ,过滤 、攻击和加密不是卫星的主要功能 ,故选 B。
题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 B C B C A D A B A C B D B D B
2、 ⼩ 杨想编写 ⼀ 个判断任意输 ⼊ 的整数 N 是否为素数的程序 ,下 ⾯ 哪个 ⽅ 法
不合适? ( )
A. 埃 ⽒ 筛法
B. 线性筛法
C. ⼆ 分答案
D. 枚举法
【答案】 C
【解析 】二分答案算法的核心思路是对需要求的答案进行二分 ,每次将答案范围
减半直到找到目标答案为止 ; 在求素数问题上 , 不存在二分的明显规律 , 因此使
用二分法判断是否是素数不是一种合适的算法,本题选 C。
3、内排序有不同的类别 ,下 ⾯ 哪种排序算法和冒泡排序是同 ⼀ 类? ( )
A. 希尔排序
B. 快速排序
C. 堆排序
D. 插 ⼊ 排序
【答案】 B
【解析 】本题主要考查几种排序算法 。冒泡排序和快速排序都是内排序中比较排
序类算法 ,并且属于交换排序的类型 。A选项希尔排序和 D 选项插入排序是属于
比较排序类算法中的插入排序类型 。而 C选项堆排序是属于比较排序类算法中的
选择排序类型。故本题选择 B选项。
4、 下 ⾯ Python 代码 ⽤ 于求斐波那契数列 ,该数列第 1 、 2项为 1, 以后各项
均是前两项之和 。下 ⾯ 有关说法错误的是 ( )。
A. fiboA( )⽤ 递归 ⽅ 式, fiboB() 循环 ⽅ 式
B. fiboA( )更加符合斐波那契数列的数学定义 ,直观易于理解 , ⽽ fiboB()
需要将数学定义转换为计算机程 序实现
C. fiboA( )不仅仅更加符合数学定义 ,直观易于理解 ,且因代码量较少执
⾏ 效率更 ⾼
D. fiboB( )虽然代码量有所增加 ,但其执 ⾏ 效率更 ⾼
【答案】 C
【解析 】fiboA() 借助函数自我调用求解数列 ,fiboB() 借助简单循环方式求解数列 ,
选项 A正确 ; fiboA() 直观体现了斐波那契数列中元素间的关系 , 选项 B正确 ; 递
归算法代码执行效率与递归范围关系更密切,与代码量关系不大,选项 C错误 ;
fiboA() 中的递归算法通常来说执行效率偏低, fiboB() 只需要执行一层循环,效率
更高,选项 D 正确;故此题选 C。
5、 下 ⾯ Python 代码以递归 ⽅ 式实现合并排序 , 并假设 merge(left,right) 函数能
对有序(同样排序规则)的 left 和 right 排序 。横线处应填上代码是 ( )。
A. mergeSort(listData[:Middle]), mergeSort(listData[Middle:])
B. mergeSort(listData[:Middle-1]), mergeSort(listData[Middle+1:])
C. mergeSort(listData[:Middle]), mergeSort(listData[Middle+1:])
D. mergeSort(listData[:Middle-1]), mergeSort(listData[Middle:])
【答案】 A
【解析 】使用递归方式实现合并排序时 ,整体思路为对数列进行左右两半的分段 ,
再分别对左右两段进行合并排序;题目中 Middle 作为原列表元素位置的中点,
在进行列表切片时,需要根据切片规则注意 Middle 处的值是否丢失或重复; B
选项丢失了 Middle-1 及 Middle , C选项丢失了 Middle , D 选项丢失了 Middle-1 ,
故此题选 A。
6、阅读下 ⾯ 的 Python 代码 ,执 ⾏ 后其输出是 ( )。
A. 1->120<===>2->120
B. 1->120<===>1->120
C. 1->120<===>1->2->3->4->5->120
D. 1->120<===>2->3->4->5->6->120
【答案】 A
【解析】代码中 fracA() 和 fracB() 两个函数,均是求解 N 的阶乘的函数,并把 N
的阶乘作为返回值返回给函数 ; 不同的是 fracA() 使用递推进行求解 , fracB() 使用
递归求解 ;通过装饰器对两个函数功能的链接 ,第一 个 prin t输出的先 是 stepCoun t
的值 +5 的阶乘的返回值;第二个 print 输出了中转符号;而第三个 print 输出由
递归求解的 5的阶乘值时 ,由于函数内部自我逐层调用与逐层返回 ,在装饰器捆
绑的 countIt() 函数功能下 ,接连返回了每次递归的次数 ,最终输出阶乘结果 120 ;
由于使用 global 关键字
2023年12月GESP认证Python等级考试5级真题试卷答案解析