2026年3月CCF—GESP(Python六级)编程能力等级认证试卷
六级
2026
2026-09-17 18:20:51
90次
一、单选题
给定一棵二叉树,采用广度优先搜索(BFS) 算法,返回右视图所有节点的值。其中右视图定义为:二叉树的右视图是从树的右侧看过去时可见的节点集合,即右视图中的每个节点都是某一层中最右侧的节点。
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def rightSideView(root):
rightmost_value_at_depth = {}
max_depth = -1
node_queue = []
depth_queue = []
node_queue.append(root)
depth_queue.append(0)
while node_queue:
node = node_queue.pop(0)
depth = depth_queue.pop(0)
if node is not None:
max_depth = max(max_depth, depth)
rightmost_value_at_depth[depth] = node.val
node_queue.append(node.left)
node_queue.append(node.right)
# (1) 填空处
depth_queue.append(depth + 1)
depth_queue.append(depth + 1)
right_view = []
# (2) 填空处
for depth in range(max_depth + 1):
right_view.append(rightmost_value_at_depth[depth])
return right_view
if __name__ == "__main__":
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.right = TreeNode(5)
root.right.right = TreeNode(4)
print(rightSideView(root))| A. (1)depth , depth ;(2)0 , max_depth |
B. (1)depth + 1 , depth + 1 ;(2)0 , max_depth + 1 |
| C. (1)depth + 1 , depth + 1 ;(2)1 , max_depth + 1 |
D. (1)depth , depth ;(2)1 , max_depth |
【知识点】 CCF—GESP Python六级
游乐园的过山车每次限坐4 人,用循环队列管理排队(容量MAX=5,空一格判满)。下面代码执行后,循环队列是否已满?rear 的值是多少?
MAX = 5
queue = [None] * MAX
front = 0
rear = 0
def enqueue(x):
global rear, queue
queue[rear] = x
rear = (rear + 1) % MAX
def dequeue():
global front
front = (front + 1) % MAX
if __name__ == "__main__":
enqueue(1)
enqueue(2)
enqueue(3)
enqueue(4)
dequeue()
dequeue()
enqueue(5)
enqueue(6)
print("队列数组: ", queue)
print("front下标位置: ", front)
print("rear下标位置: ", rear)| A. 已满,rear = 1 |
B. 未满,rear = 1 |
| C. 已满,rear = 2 |
D. 未满,rear = 4 |
【知识点】 CCF—GESP Python六级
下面的代码在主程序if name == " main ": 中有没有一行会导致运行错误,如果有请找出错误行()
class Pet:
def __init__(self, n, a):
self._name = n
self._age = a
def get_name(self):
return self._name
def birthday(self):
self._age += 1
if __name__ == "__main__":
cat = Pet("奶茶", 2)
print(cat.get_name()) # ①
cat.birthday() # ②
cat._name = "大橘" # ③
print(cat.get_name()) # ④| A. 第①行 |
B. 第②行 |
| C. 第③行 |
D. 无错误行 |
【知识点】 CCF—GESP Python六级
下列代码中,s1 .draw() 和s2 .draw() 能正确运行并输出不同结果的主要原因是()。
class Shape:
def draw(self):
print("绘制图形")
class Circle(Shape):
def draw(self):
print("绘制圆形")
class Rectangle(Shape):
def draw(self):
print("绘制矩形")
if __name__ == "__main__":
s1 = Circle()
s2 = Rectangle()
s1.draw()
s2.draw()| A. draw() 是普通成员函数 |
B. Shape 中的draw() 被声明为虚函数 |
| C. Circle 和Rectangle 中使用了公有继承 |
D. 对象变量名不同 |
【知识点】 CCF—GESP Python六级
小朋友们去邻里拜年,每个家里有不同数量的糖果。规则是:不能连续进入两个相邻的房子(即不能同时取相邻两家的糖果)。目标是拿到最多糖果。以下是代码实现,请补全横线。
def visit(nums): if not nums: return 0 size = len(nums) if size == 1: return nums[0] dp = [0] * size dp[0] = nums[0] dp[1] = max(nums[0], nums[1]) for i in range(2, size): dp[i] = max(dp[i-1], dp[i-2] + nums[i]) # 填空处 return dp[size - 1] if __name__ == "__main__": nums1 = [1, 2, 3, 1] print(visit(nums1)) nums2 = [2, 7, 9, 3, 1] print(visit(nums2)) nums3 = [5] print(visit(nums3)) nums4 = [] print(visit(nums4))
| A. dp [i] = dp [i - 1] + nums [i] |
B. dp [i] = max (dp [i - 1], dp [i - 2] * nums [i]) |
| C. dp [i] = max (dp [i - 1], dp [i - 2] + nums [i]) |
D. dp [i] = dp [i - 2] + nums [i] |
【知识点】 CCF—GESP Python六级
以下关于Python 类继承的代码,执行后输出结果是?()
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return "动物叫声"
class Dog(Animal):
def speak(self):
return f"{self.name}: 汪汪汪"
class Cat(Animal):
def __init__(self, name, color):
super().__init__(name) # 调用父类构造方法
self.color = color
def speak(self):
return f"{self.name} ({self.color}): 喵喵喵"
dog = Dog("旺财")
cat = Cat("咪宝", "橘色")
print(dog.speak(), cat.speak())| A. 动物叫声动物叫声 |
B. 旺财:汪汪汪咪宝:喵喵喵 |
| C. 旺财:汪汪汪咪宝(橘色):喵喵喵 |
D. 动物叫声咪宝(橘色):喵喵喵 |
【知识点】 CCF—GESP Python六级
二、判断题
设二叉树共有n个结点,函数 preorderTraversal 的时间复杂度为O(n),空间复杂度为O(n)。
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def preorder(root, res):
if root is None:
return
res.append(root.val)
preorder(root.left, res)
preorder(root.right, res)
def preorderTraversal(root):
res = []
preorder(root, res)
return res
if __name__ == "__main__":
root = TreeNode(1)
root.right = TreeNode(2)
root.right.left = TreeNode(3)
result = preorderTraversal(root)
print("前序遍历结果: ", result) | A.正确 | B.错误 |
【知识点】 CCF—GESP Python六级
以下代码实现了0 -1背包问题的一维动态规划解法,内层循环采用经典的逆序遍历方式。若将内层循环改为正序遍历(即for j in range(w[i], W + 1):),仍能得到正确答案。
def knapsack_01(): W = 5 w = [2, 3, 4] v = [10, 1, 1] n = 3 dp = [0] * (W + 1) for i in range(n): for j in range(W, w[i] - 1, -1): dp[j] = max(dp[j], dp[j - w[i]] + v[i]) print(dp[W]) knapsack_01()
| A.正确 | B.错误 |
【知识点】 CCF—GESP Python六级
对如下结构的树,执行travel 函数,输出结果是1 2 3 4 5。

class Node: def __init__(self, v): self.val = v self.left = None self.right = None def travel(root): if not root: return stack = [] stack.append(root) while stack: cur = stack.pop() print(cur.val, end=" ") if cur.right: stack.append(cur.right) if cur.left: stack.append(cur.left) if __name__ == "__main__": root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) travel(root)
| A.正确 | B.错误 |
【知识点】 CCF—GESP Python六级
下面定义了一个表示二维坐标点的类Point,并提供了一个带参数的构造函数,但第②行Point b ; 会调用编译器自动生成的默认构造函数,将b .x 和b .y 被初始化为0.0,程序可以正常编译运行。
class Point:
def __init__(self, px, py):
self.x = px
self.y = py
def print(self):
print(f"({self.x}, {self.y})")
if __name__ == "__main__":
a = Point(3.0, 4.0) # ①
# ②
b = Point(0, 0)
a.print()| A.正确 | B.错误 |
【知识点】 CCF—GESP Python六级


