万卷网> GESP认证 >Python > 2026年3月CCF—GESP(Python四级)编程能力等级认证试卷

2026年3月CCF—GESP(Python四级)编程能力等级认证试卷
四级 2026 2026-07-31 19:10:25 133

一、单选题

1.

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

try:
    print(1, end="")
    raise ValueError("x")
except ValueError as e:
    print(2, end="")
else:
    print(3, end="")
finally:
    print(4, end="")
A.

14

B.

124

C.

1234

D.

程序报错

2.

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

A.

用于检测重心的重力传感器

B.

预装的AI算法程序

C.

接收动作指令的遥控器

D.

拍摄其他机器人的摄像头

3.

以下代码的时间复杂度是?()2026.3-4

def func(n):
	sum = 0
	for i in range(n):
		for j in range(i):
			sum += j
A.

O(1)

B.

O(n)

C.

O(n2)

D.

O(logn)

4.

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

A.

列表

B.

字典

C.

元组

D.

集合

5.

执行以下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))
A.

12

B.

6

C.

88

D.

9

6.

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

A.

lambda 匿名函数可以包含多个表达式,用分号分隔

B.

lambda 匿名函数必须有参数

C.

lambda 匿名函数可以接受多个参数,但只能有一个表达式

D.

lambda 匿名函数必须有return 语句

7.

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

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
        arr[j + 1] = key  # 插入元素到正确位置
A.

arr [j + 1] = key

B.

arr [j - 1] = key

C.

key = arr [j]

D.

arr [i] = key

8.

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

tup = (1 , [2 , 3], 4) 
tup [1] = [5 , 6]
A.

元组被成功修改为(1 , [5 , 6], 4)

B.

代码可以执行,但元组内容未改变

C.

抛出TypeError 异常

D.

元组被修改为(1 , 2 , 3 , 4 , 5 , 6)

9.

阅读以下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)


A.

找出所有n 位数

B.

找出由两个n 位数相乘得到的最大回文数

C.

找出所有回文数

D.

计算两个n 位数乘积的最大值

10.

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

words = ["hello ", "world ", "python"]
result = [char for word in words for char in word if char in 'aeiou '] 
print(len(result))
A.

3

B.

4

C.

5

D.

6

11.

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

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
total = 0
for row in matrix:
    for element in row:
        if element % 2 == 0:
            total += element
print(total)
A.

4

B.

10

C.

20

D.

25

12.

以下代码实现了根据分数返回等级(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} 的等级是 {_____②_____}")
A.

①grade_map[score] ②grade

B.

①key ②get_grade(score)

C.

①grade_map[key] ②score

D.

①grade_map[key] ②grade

13.

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

A.

global

B.

nonlocal

C.

local

D.

outer

14.

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

Max = 0
N = int(input())

while(N):
    val = int(input())
    if val > Max: #L1
        Max = val
    N -= 1

print(Max)
A.

圆形框

B.

椭圆形框

C.

平行四边形框

D.

菱形框

15.

文件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)
A.

readlines()

B.

read()

C.

readline()

D.

readlines

二、判断题

1.

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

print(list(filter(lambda x: x > 5 , [3 , 6 , 7 , 2])))
A.正确 B.错误
2.

执行以下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()))
A.正确 B.错误
3.

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

A.正确 B.错误
4.

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

A.正确 B.错误
5.

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

my_set = {i : j for i , j in zip([1 , 2], [3 , 4])}
print(type(my_set))
A.正确 B.错误
6.

执行以下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)
A.正确 B.错误
7.

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

A.正确 B.错误
8.

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

a, b = 1, 2
for i in range(3):
    a, b = b, a + b
print(b)
A.正确 B.错误
9.

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

def func(n):
	for i in range(n):
		for j in range(n):
			if i % 2 == 0:
				break
A.正确 B.错误
10.

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

data = {'a': 1}
index = int(input())
print(data['b'] / index)
A.正确 B.错误

三、编程题

1.

礼盒排序

时间限制:1.0 s

内存限制:512.0 MB

题目描述

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

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

1. 先按礼盒总价格从小到大排序;

2. 如果总价格相同,按礼盒中最贵商品的价格从小到大排序;

3. 如果仍然相同,按礼盒中最便宜商品的价格从小到大排序;

4. 如果仍然相同,按礼盒编号从小到大排序。

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

输入格式

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

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

输出格式

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

输入样例

4 3
3 5 2
4 1 5
2 2 4
3 4 3

输出样例

3 4 2 1

样例解释

4 个礼盒分别为:

排序过程:

1. 按总价排序,3号礼盒总价最小;

2. 其余总价均为 10,再按最大值排序,4号最大值更小;

3. 1号和2号最大值相同,再按最小值排序,2号更小。

最终顺序为:3 4 2 1

 数据范围

保证1≤n≤103,1≤k≤10,商品价格≤104。

2.

山之谷

时间限制:1.0 s

内存限制:512.0 MB

题目描述

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

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

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

输入格式

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

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

输出格式

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

输入样例

3 5
7 6 6 7 9
6 5 6 7 6
6 5 7 8 9

输出样例

3

样例解释

样例 1 如图所示,绿色单元格代表山谷:

数据范围

保证1≤N,M≤100,1≤hi,j≤105。

公众号
客服 反馈
顶部