2023 年 12 月认证 Python 七级真题解析
CCF 编程能力等级认证 ,英文名 Grade Examination of Software Programming ( 以
下简称 GESP ),由中国计算机学会发起并主办 ,是为青少年计算机和编程学习者提供学业
能力验证的平台。 GESP 覆盖中小学全学段,符合条件的青少年均可参加认证。 GESP 旨在
提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP 考察语言为图形化( Scratch )编程、 Python 编程及 C++ 编程,主要考察学生
掌握相关编程知识和操作能力 ,熟悉编程各项基础知识和理论框架 ,通过设定不同等级的考
试目标 ,让学生具备编程从简单的程序到复杂程序设计的编程能力 ,为后期专业化编程学习
打下良好基础。
本次为大家带来的是 2023 年 12 月份 Python 七 级认证真题解析。
一、 单选题(每题 2分,共 30 分)
1、 假设变量 x为 float 类型,如果下面代码输入为 100 ,输出最接近 ( )。
A.0
B.-5
C.-8
D.8
题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 B D B C D D B C B C D C B D B
【答案】 B
【解析】本题属于考察用 python 解决数学问题,使用了一个数学上对数方式来
计算,计算 10 为底的对数 5减以 2为底的对数 5, 答案为: -5 。
2、 对于下面动态规划方法实现的函数,以下选项中最适合表达其状态转移函数
的为 ( )。
A.
B.
C.
D.
【答案】 D
【解析 】 本题属于考察区间动态规划状态转移表达式的题目 , 根据程序 , 我们可
以抓住程序的终点,可以知道,在本区间中, i和 j是两个端点值, k是分界点 ,
所以 k的范围是在 [i,j), 所以 C中累加到 j+1 错误。通过 16 行状态转移方程得知 ,
s列表和 k无关,所以将其单独提出来,所以选择 D。
3、 下面代码可以用来求最长上升子序列 ( LIS ) 的长度 , 如果输入是整数序列是 :
517359,则输出是 ( )。
A. 9 7 5 1 1 9
B. 1 2 2 2 3
C. 1 3 5 7 9 9
D. 1 1 1 1 1 1
【答案】 B
【解析】本题属于考察最长上升子序列的问题,要寻找 arr 中最长上升子序列 ,
要明白 , 子序列未必是连续的 。 其中 cnt 是用来记录连续上升元素的个数 , 如果
中途被打断 , 则 cnt 从 1开始重新计算 。 而 ans 则是用来记录列表的最长子序列
的个数。将数字 5,1,7,3,5,9 分别带入, ans 值分别为 12223,选择 B。
4、 Python 中,下列关于类描述不正确的是 ( )。
A. 类属性可以通过类的名称访问其值。
B. 类属性也可以称之为类的静态属性。
C. 和实例属性相同,类属性前面也必须有 self 关键字,并以句点间隔。
D. 如果在类的某个实例(对象)中修改类属性的值,则其他该类实例访问该
值时,其值也随之改变。
【答案】 C
【解析 】 本题属于考察类的知识点 , 类属性是指在类中函数之外的属性 , 不需要
前面有 self 关键字,所以选择 C。
5、 G 是一个非连通无向图,共有 28 条边,则该图至少有 ( )个顶点。
A. 6
B. 7
C. 8
D. 9
【答案】 D
【解析 】 本题属于考察非连通无向图 , 问至少有几个顶点 , 所以最多会有一个点
是独立的点 , 我们可以看成有 28 条边的无向完全图有多少顶点再额外 +1 点 , 根
据公式 n(n-1)/2=28 ,得出 n为 8,所以该非连通无向图至少为 9个顶点 ,选择 D。
6、哈希表长 31 ,按照下面的程序依次输入 417 28 30 4,则 4存入哪个位置? ( )
A. 3
B. 4
C. 5
D. 6
【答案】 D
【解析 】 本题属于考察哈希表 , 解决哈希冲突的问题 , 根据题意我们发现 , 是按
照 %13 进行哈希 ,并且在发生冲突的时候 ,放到下一个位置 ,我们依次将 417 28
30 4带入,得出 17 在 4号, 28 在 2号, 30 本应在 4号但是被占用顺位到 5号 ,
4在 4号,发生冲突后顺位到 6号,选择 D。
7、 某二叉树 T的先序遍历序列为 : {A BD FCEG H} , 中序遍历序列为 : {B FD AG
EH C} ,则下列说法中正确的是 ( )。
A. T的度为 1
B. T的高为 4
C. T有 4个叶节点
D. 以上说法都不对
【答案】 B
【解析 】本题属于考察二叉树的遍历问题 ,已知先序和中序 ,可得到如图二叉树 :
选择 B。
8、 下面代码段可以求两个字符串 s1 和 s2 的最长公共子串 ( LCS ) , 下列相关描
述不正确的是( )。
A. 代码的时间复杂度为 O(n^2)
B. 代码的空间复杂度为 O(n^2)
C. 空间复杂度已经最优
D. 采用了动态规划求解
【答案】 C
【解析 】 本题属于考察最长公共子串 LCS , 根据程序 , 我们发现 , 代码中使用了
双重 for 循环 ,所以时间复杂度为 O(n^2) ,A为正确 。代码中使用了二维列表 res ,
所以空间复杂度为 O(n^2) ,B为正确 。代码使用了动态规划的算法 。其中 C选项 ,
我们可以将二维列表优化为一维列表 ,每次向下滚动后 ,原来的一维列表内容就
不再使用 , 所以可以使用更新的方式 , 不断的更新一维列表 , 是空间复杂度降 为
O(n) ,选择 C。
9、 图的广度优先搜索中既要维护一个标志数组标志已访问的图的结点,
2023年12月GESP认证Python等级考试七级真题试卷答案解析