试卷总分:100分


选择题 15题 30分

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15


判断题 10题 20分

16 17 18 19 20 21 22 23 24 25


编程题 2题 50分

26 27

E1116 CCF-GESP编程能力等级认证-Python -2026-03 CCF-GESP Python四级真题-考试

选择题 共15道

01

2026年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。

2分
登录后查看选项
02

下面代码用来找出输入的 N 个正整数中最大的一个。如果将代码段用流程图来表示,则 L1 标记的代码行应该使用的图形是( )。

Max = 0
N = int(input())
while(N):
	val = int(input())
	if val > Max: #L1
		Max = val
	N -= 1
print(Max)
2分
登录后查看选项
03

执行以下 Python 代码后,输出的结果是?( )

total = 0
for row in matrix:
	for element in row:
		if element % 2 == 0:
			total += element
print(total)
2分
登录后查看选项
04

执行以下 Python 代码,说法正确的是?

tup = (1, [2, 3], 4)
tup[1] = [5, 6]
2分
登录后查看选项
05

执行以下Python代码后,输出的结果是?

words = ["hello", "world", "python"]
result = [char for word in words for char in word if char in 'aeiou']
print(len(result))
2分
登录后查看选项
06

函数定义 def func(*args): pass 中的 *args 会将传入的参数打包成什么类型?

2分
登录后查看选项
07

在嵌套函数中,需要修改外层函数(非全局作用域)的变量,应使用哪个关键字?

2分
登录后查看选项
08

执行以下 Python 代码后,输出的结果是?

def process_data(data):
	result = []
	for item in data:
		if item > 0:
			result.append(item * 2)
		elif item < 0:
			result.append(abs(item))
		else:
			result.append(0)
	return result
output = process_data([-2, 0, 3, -1])
print(sum(output))
2分
登录后查看选项
09

关于 lambda 匿名函数,以下描述正确的是?

2分
登录后查看选项
10

文件 text.txt 的内容如下:

Python is a programming language.
Python is easy to learn.

以下程序统计单词 "Python" 在文件中出现的次数。Python 后面是空格或行尾,且不跟标点。请补全代码。

count = 0
with open("text.txt", "r") as f:
	content = f.________ # 补全代码
	words = content.split()
	for word in words:
		if word == "Python":
			count += 1
print("Python出现次数:", count)
2分
登录后查看选项
11

以下代码的时间复杂度是?

def func(n):
	sum = 0
	for i in range(n):
		for j in range(i):
			sum += j
2分
登录后查看选项
12

执行以下 Python 代码后,输出的结果是?

try:
	print(1, end="")
	raise ValueError("x")
except ValueError as e:
	print(2, end="")
else:
	print(3, end="")
finally:
	print(4, end="")
2分
登录后查看选项
13

以下代码使用插入排序对列表进行升序排序。空白处应填入?

def insertion_sort_optimized(arr):
	n = len(arr)
	for i in range(1, n):
		key = arr[i] # 当前待插入元素
		j = i - 1
		while j >= 0 and arr[j] > key:
			arr[j + 1] = arr[j] # 元素后移
			j -= 1
		_______________ # 插入元素到正确位置
2分
登录后查看选项
14

阅读以下 Python 代码,下列说法正确的是?

n = int(input())
def is_palindrome(s):
	return s == s[::-1]
max_palindrome = 0
for i in range(10 ** (n - 1), 10 ** n):
	for j in range(i, 10 ** n):
		product = i * j
		if is_palindrome(str(product)) and product > max_palindrome:
			max_palindrome = product
print(max_palindrome)
2分
登录后查看选项
15

以下代码实现了根据分数返回等级(A: 90-100, B: 80-89, C: 70-79, D: 60-69, F: 0-59)的功能,请选择正确的选项填入①②处。

grade_map = {90: "A", 80: "B", 70: "C", 60: "D", 0: "F"}
def get_grade(score):
	if score < 0 or score > 100:
		return "无效分数"
	for key in sorted(grade_map.keys(), reverse=True):
		if score >= key:
			return _____①_____
score = int(input())
grade = get_grade(score)
print(f"分数 {score} 的等级是 {_____②_____}")
2分
登录后查看选项

判断题 共10道

16

小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。

2分
登录后查看选项
17

在 Python 语言中,一个集合可以作为另一个集合的元素。

2分
登录后查看选项
18

执行以下 Python 代码后,输出的结果是 <class 'set'> 。

my_set = {i: j for i, j in zip([1, 2], [3, 4])}
print(type(my_set))
2分
登录后查看选项
19

执行以下 Python 代码后,输出的结果是 20 10 。

def func(a, b):
	a = a ^ b
	b = a ^ b
	a = a ^ b
	return a, b
a, b = func(10, 20)
print(a, b)
2分
登录后查看选项
20

执行以下 Python 代码后,输出的结果是 [6, 7] 。

print(list(filter(lambda x: x > 5, [3, 6, 7, 2])))
2分
登录后查看选项
21

执行以下Python代码后,输出的结果是 '789\n456' 。

with open('test.txt', 'w') as f:
	f.write('123\n456')
with open('test.txt', 'r+') as f:
	f.seek(0, 2)
	f.write('789')
	f.seek(0)
	print(repr(f.read()))
2分
登录后查看选项
22

下面这段程序的时间复杂度为平方阶 O(n)。

def func(n):
	for i in range(n):
		for j in range(n):
			if i % 2 == 0:
				break
2分
登录后查看选项
23

执行以下 Python 代码后,会抛出异常 ZeroDivisionError 。

data = {'a': 1}
index = int(input())
print(data['b'] / index)
2分
登录后查看选项
24

在对列表进行排序时, sorted() 函数会返回一个新的排序后的列表,不修改原列表,而 sort() 方法会直接修改原列表,返回值为 None 。

2分
登录后查看选项
25

阅读以下递推算法的 Python 代码,执行后的输出结果是 13 。

a, b = 1, 2
for i in range(3):
	a, b = b, a + b
print(b)
2分
登录后查看选项

编程题 共2道

26

山之谷

题目描述

现有一片山地,可以视为一个 N 行 M 列的网格图,第 i 行 j 列的海拔为 hi,j。

如果一个单元格的海拔不高于其所有相邻单元格(相邻包括上、下、左、右、左上、右上、左下、右下,最多 8 个方向)的海拔,则称该单元格为山谷。

请你数一数该片山地中有多少山谷。

输入

第一行包含2个整数N,M,表示山地的大小。

之后N行,每行包含M个整数h(i,1),h(i,2),...,h(i,M),表示海拔。

输出

输出1行,包含1个整数C,表示山谷的数量。

数据范围

保证1≤N,M≤100,1≤h(i,j)≤10^5

输入样例1

3 5

7 6 6 7 9

6 5 6 7 6

6 5 7 8 9

输出样例1

3

25分
登录后作答
27

礼盒排序

题目描述

商店推出了许多礼盒,每个礼盒中包含 k 件商品,每件商品都有一个价格。

现在需要对这些礼盒进行排序,排序规则如下:

  1. 先按礼盒总价格从小到大排序;
  2. 如果总价格相同,按礼盒中最贵商品的价格从小到大排序;
  3. 如果仍然相同,按礼盒中最便宜商品的价格从小到大排序;
  4. 如果仍然相同,按礼盒编号从小到大排序。

请输出排序后的礼盒编号。

输入

第一行包含两个整数n和k,分别表示礼盒数量和每个礼盒中商品的数量。

接下来n行,每行包含k个整数,第i行表示第i个礼盒中各商品的价格。

输出

输出一行,包含排序后的礼盒编号(编号从1开始),用空格分隔。

数据范围

保证1≤n≤10^3,1≤k≤10,商品价格≤10^4。

输入样例1

4 3

3 5 2

4 1 5

2 2 4

3 4 3

输出样例1

3 4 2 1

25分
登录后作答