CCF-GESP 等级考试 2025年6月认证Python六级真题解析

2025年6月Python六级GESP真题解析

1 单选题(每题 2 分,共 30 分)

第1题 下列哪一项不是面向对象编程(OOP)的基本特征?(   )

A. 继承 (Inheritance)                                                 B. 封装 (Encapsulation)

C. 多态 (Polymorphism)                                           D. 链接 (Linking)

解析:答案D面向对象编程的基本特征包含封装、继承、多态和抽象四大核心要素,这四大特征共同构成了代码组织的核心范式,有效提升了程序的可维护性、扩展性和复用性。‌‌‌‌所以D.不是。故选D

第2题 为了让 Dog 类的构造函数能正确地调用其父类 Animal 的构造方法,横线线处应填入(   )。

  1. class Animal:
  2.     def __init__(self, name: str):
  3.         self.name = name
  4.         print("Animal created")
  5.     def speak(self) -> None:
  6.         print("Animal speaks")
  7. class Dog(Animal):
  8.     ______________________________
  9.         print("Dog created")
  10.     def speak(self) -> None:
  11.         print("Dog barks")
  12. if __name__ == "__main__":
  13.     animal: Animal = Dog("Rex", "Labrador")
  14.     animal.speak()

A.

  1. def __init__(self, name: str, breed: str):
  2.     super().__init__(name)
  3.     self.breed = breed

B.

  1. def __init__(self, name: str, breed: str):
  2.     self.breed = breed

C.

  1. def __init__(self, name: str, breed: str):

D.

  1.     self.breed = breed

解析:答案A继承父类构造函数:子类 Dog 需要通过 super().__init__(name) 显式调用父类 Animal 的构造函数,以确保执行父类构造函数(如 self.name = name 和打印 "Animal created")被执行。扩展子类属性Dog 类新增了 breed 属性,需要在子类构造函数中初始化 self.breed = breed。所以A.的代码完全符合上述逻辑,而其他选项(B.C.D.)要么遗漏了 super().__init__(),要么语法不完整。故选A

第3题 代码同上一题,代码animal.speak()执行后输出结果是(   )。

A. 输出 Animal speaks      B. 输出 Dog barks         C. 编译错误                         D. 程序崩溃

解析:答案‌B‌‌Dog 实例化时,通过 super().__init__("Rex") 调用父类 Animal 的构造函数,执行 print("Animal created") 并初始化 name 属性。Dog 的构造函数继续执行 print("Dog created")。最后调用 animal.speak(),由于 Dog 重写了 speak 方法,输出 "Dog barks"‌,所以输出 Dog barks。故选B

第4题 以下Python代码执行后其输出是(   )。

  1. from collections import deque
  2. stack = []
  3. queue = deque()
  4. # 元素入栈/入队(1, 2, 3)
  5. for i in range(1, 4):
  6.     stack.append(i)
  7.     queue.append(i)
  8. print(f"{stack[-1]} {queue[0]}")

A. 1 3                                   B. 3 1                                C. 3 3                                    D. 1 1

解析:答案‌B‌栈和队列的操作:栈(stack)是先进后出(FILO)结构,本题用列表模拟,append(i) 依次添加 1, 2, 3,因此 stack[-1](栈顶元素,列表最后的元素)为 3。队列(deque)是先进先出(FIFO)结构, append(i) 依次添加 1, 2, 3,因此 queue[0](队首元素)为 1。所以输出结果f"{stack[-1]} {queue[0]}"的结果为 "3 1"。故选B

第5题 在一个使用列表实现的循环队列中,front 表示队头元素的位置(索引),rear 表示队尾元素的下一个插入位置(索引),队列的最大容量为 maxSize。那么判断队列已满的条件是(   )

A. rear == front                                                          B. (rear + 1) % maxSize == front

C. (rear - 1 + maxSize) % maxSize == front             D. (rear - 1) == front

解析:答案‌B‌。在循环队列中,判断队列已满的条件需要满足以下两点:队尾指针(rear)的下一个位置是队头指针(front,即 rear 即将追上 front为了避免rear == front时出现歧义(此时队列可能为空也可能为满),通常使用 (rear + 1) % maxSize == front 来判断是否已满rear == front‌用于判断空队列,所以A.错误。(rear - 1 + maxSize) % maxSize == front‌

等价于 rear - 1 == frontC.D.相同,所以两者都错。故选B

第6题 在二叉树中,只有最底层的节点未被填满,且最底层节点尽量靠左填充的是(   )。

A. 完美二叉树                B. 完全二叉树                C. 完满二叉树                D. 平衡二叉树

解析:答案‌B‌完美二叉树(Perfect Binary Tree):一个深度为k(>=1)且有2^(k-1) - 1个结点的二叉树称为完美二叉树。(注:国内的数据结构教材大多翻译为"满二叉树")。完全二叉树(Complete Binary Tree):完全二叉树从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐。完满二叉树(Full Binary Tree):所有非叶子结点的度都是2。(只要你有孩子,你就必然是有两个孩子。)所以B.正确。故选B

第7题 在使用数组(列表)表示完全二叉树时,如果一个节点的索引为𝑖(从0开始计数),那么其左子节点的索引通常是(   )。

A.(i-1)/2                               B.i+1                              C.i+2                                 D.2*i+1

解析:答案D‌。在使用数组表示完全二叉树时,节点的索引从‌0开始,其子节点的索引计算规则为:左子节点的索引为2*i + 1右子节点的索引为2*i + 2。例如:根节点 i = 2:左子节点 i = 2*2 + 1 = 5,右子节点 i = 2*2 + 2 = 6D.‌

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值