2023 年 12 月认证 Python 八级真题解析
CCF 编程能力等级认证 ,英文名 Grade Examination of Software Programming ( 以
下简称 GESP ),由中国计算机学会发起并主办 ,是为青少年计算机和编程学习者提供学业
能力验证的平台。 GESP 覆盖中小学全学段,符合条件的青少年均可参加认证。 GESP 旨在
提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP 考察语言为图形化( Scratch )编程、 Python 编程及 C++ 编程,主要考察学生
掌握相关编程知识和操作能力 ,熟悉编程各项基础知识和理论框架 ,通过设定不同等级的考
试目标 ,让学生具备编程从简单的程序到复杂程序设计的编程能力 ,为后期专业化编程学习
打下良好基础。
本次为大家带来的是 2023 年 12 月份 Python 八 级认证真题解析。
一、单选题(每题 2分,共 30 分)
1、 小杨要从 A 城到 B 城,又想顺路游览一番。他有两个选项: 1、坐高铁路 到
C 城游览 , 再坐高铁或飞机到 B 城 ; 2、 坐船到 D 城游览 , 再坐船 、 高铁或飞机
到 B 城。请问小杨从 A 城到 B 城共有几种交通方案可以选择?( )。
A. 2
B. 3
C. 5
D. 6
【答案】 C
题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 C A D B C D A C A C D B B A C
【解析】本题本质是一道数学题目,将问题分为 2部分,第一部分为 A->C->B,
有 2种方案,第二部分为 A->D->B ,有 3种方案,加起来是 5种,选择 C。
2、 在 Python 定义 fuc1() 函数如下 。 有关调用该函数的说法 , 正确的是 ( ) 。
A. 调用 func1() 函数时,如果参数 a 为类似二维数组 list , b 为一维 list ,
函数调用不会报错;
B. 调用 func1() 函数时,如果参数 a 为类似二维数组 list , b 为一维 list ,
函数调用将会报错;
C. 调用 func1() 函数时 ,如果参数 a 和 b 的类型均为 tuple ,b 也为 tuple ,
函数调用将会报错;
D. 调用 func1() 函数时,如果参数 a 和 b 的类型为 dict ,函数调用将会报
错;
【答案】 A
【解析】本题考察的是 “+”号的运算,其中 A,B 选择是关于列表的加法,是将两
个列表的拼接成一个列表 , 不会报错 。 C 选项是关于元组的加法 , 元组是不可修
改的 ,但是两个元组相加是生成了另一个元组 ,并不会修改原始元组 ,不会报错 。
D 选项是关于字典的加法 ,字典相加也是将两个字典合并成一个新的字典 ,不会
报错。选择 A。
3、下面有关 Python 类和对象的说法,错误的是( )。
A. 对象的生命周期开始时,会执行构造函数。
B. 对象的生命周期结束时,会执行析构函数。
C. 类的析构函数可以为虚函数。
D. 类的构造函数可以为虚函数。
【 答案 】 D
【解析】本题中,对象的生命周期开始和结束分别会执行构造函数和析构函数 ,
所以 A,B, 正确 。对于虚函数 ,在 python 中是虚函数的装饰器有 @abstractmetho d
def fuc1(a, b):
return a+b
和 @virtual , 并且是通过继承和方法重写来实现的 , 其中构造函数不能当成虚函
数使用 ,因为创建一个对象时我们总是要明确指定对象的类型 ,尽管我们可能通
过基类的指针或引用去访问它但析构却不一定 ,我们往往通过基类的指针来销毁
对象 。这时候如果析构函数不是虚函数 ,就不能正确识别对象类型从而不能正确
调用析构函数。选择 D。
4、 使用邻接矩阵表达 n 个顶点的有向图,则该矩阵的大小为( )。
A. n× (n+1)
B. n× n
C. n× (n −1)
D. 2n × (n −1)/2
【 答案 】 B
【解析】邻接矩阵的行列分别为 n个,大小则为 n*n 。选择 B。
5、5 位同学排队 ,其中 ⼀ 位同学不能排在第 ⼀ ,则共有多少种可能的排队 ⽅ 式?
( )。
A. 5
B. 24
C. 96
D. 120
【 答案 】 C
【解析】本题是排序题目, 5位同学排序方法有 A55, 减去指定同学排在第一位
的情况 A44, 则有 120-24=96 ,选择 C。
6、 ⼀ 个 ⽆ 向图包含 n 个顶点 ,则其最 ⼩⽣ 成树包含多少条边?( )。
A. n-1
B. n
C. n + 1
D. 最 ⼩⽣ 成树可能不存在。
【 答案 】 D
【解析 】 n个顶点的组成的树有 n-1 条边 , 但是没有保证为连通图 , 所以不能判
断是否存在最小生成树,选择 D。
7、 已知三个 double 类型的变量 a、 b和 theta 分别表 ⽰⼀ 个三角形的两条边长
及 ⼆ 者的夹角 ( 弧度 ) , 则下列哪个表达式可以计算这个三角形的 ⾯ 积? ( )。
A. a*b *sin(theta) /2
B. (a + b) *sin(theta) /20
C. a*b*cos(theta) /2
D. sqrt(a *a+ b*b-2*a*b*cos(theta))
【 答案 】 A
【解析 】 本题是数学题目 , 三角形的面积是 (底 *高 )/2 , 其中 , 如果以 b为底 , 还
缺少高 , 通过三角函数 , h=a*sin(theta) , 带入公式 , a*b* sin(theta)/2 , 选择 A。
8、 对有 n 个元素的 ⼆ 叉排序树进 ⾏ 中序遍历,其时间复杂度是( )。
A. O(1)
B. O(log(n))
C. O(n)
D. O(n 2)
【 答案 】 C
【解析】树的遍历是将每个元素遍历一次,因此时间复杂
2023年12月GESP认证Python等级考试八级真题试卷答案解析