试卷总分: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

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

选择题 共15道

01

学校组织同学们到未来农场参观,小明听讲解员介绍。在智能温室中,湿度传感器可以连续检测土壤的湿度,并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问,这里的湿度传感器所发挥的作用,类似于计算机系统中的哪一类组件?

2分
登录后查看选项
02

小明同学去郊外农场参观回来后,在自己的电脑中安装了一个 3D 农场仿真模拟系统。因为他今年买的这台二手电脑有点老旧,3D 农场仿真模拟系统运行时经常弹出“系统内存不足”的警告,导致系统卡顿严重。他计划通过增加物理内存来解决问题。请问他应该购买以下哪种硬件组件?

2分
登录后查看选项
03

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

a = {1: [2], 3: [4]}
b = a.copy()
b[1].append(3)
print(a[1])
2分
登录后查看选项
04

如果想要将一个二维列表 matrix = [[1, 2], [3, 4], [5, 6]] 扁平化为 [1, 2, 3, 4, 5, 6] ,应使用下列哪个列表推导式?

2分
登录后查看选项
05

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

def func(x, lst=[]):
	lst.append(x)
	return lst

print(func(1), func(2), func(3))
2分
登录后查看选项
06

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

def func(x, y, *args, z=10, **kwargs):
	return x + y + z + sum(args) + kwargs.get('m', 0)
result = func(1, 2, 3, 4, z=5, m=6, n=7)
print(result)
2分
登录后查看选项
07

与列表推导式 [i**2 for i in range(10)] 功能等价的 map 函数调用是?

2分
登录后查看选项
08

以下代码的功能是读取一个二进制图片文件 pic.jpg 并复制到 pic_copy.jpg ,空白处应填入?

with open('pic.jpg', '__①__') as src, open('pic_copy.jpg', '__②__') as dst:
	dst.write(src.read())
2分
登录后查看选项
09

以下函数的时间复杂度是?

def example(n):
	matrix = [[0] * n for _ in range(n)]
	for i in range(n):
		for j in range(n):
			matrix[i][j] = i * j
	return matrix
2分
登录后查看选项
10

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

def test_function():
	try:
		return "From try"
	finally:
		print("From finally", end="#")
print(test_function(), end="#")
2分
登录后查看选项
11

若输入 5 ,以下程序的输出结果是?

n = int(input())
f = [0] * (n + 1)
f[0] = 1
for i in range(1, n + 1):
	f[i] = f[i - 1] * i
print(f[n])
2分
登录后查看选项
12

关于以下代码,说法正确的是?

words = ["apple", "Cherry", "Banana"]
sorted_words = sorted(words, key=lambda s: s.lower())
2分
登录后查看选项
13

某电商平台根据用户的会员等级计算商品最终价格。等级与折扣率的对应关系存储在字典 discounts 中。为了保证程序在面对未知等级时不会报错,而是按原价(即不打折)处理,以下哪个选项是正确的?

def calculate_price(price, level):
	discounts = {"VIP": 0.8, "SVIP": 0.6}
	# 请补全代码
	discount_rate = ______①______
	return ______②______
final_price = calculate_price(100, "VIP")
print(final_price)
2分
登录后查看选项
14

有一个名为 score.txt 的文本文件,内容如下(第一行为标题行,后面每行包含姓名和分数,用空格分隔):

姓名 分数
张三 85
李四 42
王五 90
赵六 78

编写一段 Python 代码,读取该文件,统计及格人数(分数 分),并在最后输出统计结果,以下哪个选项是正确的?

count = 0
with open("score.txt", "r") as f:
	lines = f.readlines()
	for i in range(1, len(lines)):
		data = lines[i].______ # 此处需要填入适当的方法
		score = int(data[1])
		if score >= 60:
			count += 1
print("及格人数:", count)
2分
登录后查看选项
15

商品列表已按特定规则排序,每个商品包含三个信息:编号、价格、库存量,对应三元组 (id, price,stock) 。现有预算 M 元,按排好的顺序依次购买,只要当前商品的价格不超过剩余预算并且尚有剩余就购买并扣款,否则立即停止。以下哪个选项是正确的?

budget = M
products.sort(key=lambda x: (x[1], x[2], x[0])) # 按规则排序
bought = []
for item in products:
	if ________: # 此处需要填入适当的代码
		budget -= item[1]
		bought.append(item[0])
	else:
		break
2分
登录后查看选项

判断题 共10道

16

又到期末考试周,小明发现这次许多闭卷考试不仅禁止携带手机、平板电脑,还有最近比较时髦的各类 AI 眼镜(也有叫智能眼镜)也同样不允许带入考场。这些 AI 眼镜应该也是内置了操作系统并可能支持 Wi-Fi 或蓝牙连接。

2分
登录后查看选项
17

执行 [[j for j in range(i)] for i in range(3)] 解析式的结果是 [[0], [0,1]] 。

2分
登录后查看选项
18

使用 global 关键字在函数内部创建的变量,在函数执行结束后依然存在。

2分
登录后查看选项
19

执行以下代码后,输出结果为 (1, 'a') 。

pairs = [(2, 'b'), (1, 'a'), (3, 'c')]
result = min(pairs, key=lambda p: p[0])
print(result)
2分
登录后查看选项
20

在 Python 中, read() 方法会一次性读取整个文件内容,返回字符串; readlines() 方法会一次性读取所有行,返回行列表。

2分
登录后查看选项
21

以下函数的空间复杂度为 O(1)。

def func(n):
	return [i ** 2 for i in range(n)]
2分
登录后查看选项
22

在 Python 的异常处理结构中, try 块后面可以只跟随 finally 块,而不需要包含任何 except 块。

2分
登录后查看选项
23

已知递推关系式为 F(n)=F(n-3)+F(n-5) (其中 n≥5),为了保证对所有 n≥0 的计算都不出现负数下标,必须提供的初始值至少包括 F(0),F(1),F(2),F(3),F(4) 这五个值。

2分
登录后查看选项
24

选择排序是稳定的排序算法,因为它在每次选择最小元素时不会改变相等元素的相对顺序。

2分
登录后查看选项
25

执行以下代码后,输出结果为 2 。

n, m = 3, 4
grid = [[1, 3, 2, 4],
    [5, 7, 6, 8],
    [9, 0, 1, 2]]
dx = [-1, -1, -1, 0, 0, 1, 1, 1]
dy = [-1, 0, 1, -1, 1, -1, 0, 1]
count = 0
for i in range(n):
  for j in range(m):
    lower_neighbors = 0
    for k in range(8):
      x, y = i + dx[k], j + dy[k]
      if 0 <= x < n and 0 <= y < m and grid[x][y] < grid[i][j]:
        lower_neighbors += 1
    if lower_neighbors >= 5:
      count += 1
print(count)
2分
登录后查看选项

编程题 共2道

26

扫雷

题目描述

小杨同学正在游玩经典游戏「扫雷」,他想自己生成一个「扫雷」的地图。

小杨同学希望生成的地图大小为 n 行 m 列,一共 n×m 个区块。区块行号为 1,2,...,n,列号为 1,2,...,m。其中一些区块为雷区,其它区块不为雷区。

小杨同学指定了 q 个区块为雷区,而其它区块均不为雷区。小杨同学希望你帮忙计算非雷区的区块,每个区块与多少个雷区相邻?

我们定义区块相邻,当且仅当两个区块至少有一个公共顶点(也就是说对于不在地图边缘的区块,周围 8 个区块均与其相邻)。

输入

输入包含 q+1 行。

第一行,三个正整数 n,m和q,分别表示地图行数和列数,以及雷区数量。

接下来的 q 行,每行有 2 个整数,分别表示第 i 个雷区的行号和列号。

保证输入的雷区不重复。

输出

输出 n 行,每行 m 个字符(使用空格分割),对于第 i 行第 j 列,输出地图对应区块的信息:

1. 如果为雷区,输出 * ;

2. 如果不是雷区,输出其相邻雷区数量(输出 0 到 8 中的一个数字)。

数据范围

3≤n,m≤500,1≤q≤n*m

输入的雷区必定在地图内且不重复,注意行号和列号均从 1 开始。

输入样例1

3 4 4

1 1

1 3

2 4

3 2

输出样例1

* 2 * 2

2 3 3 *

1 * 2 1

25分
登录后作答
27

身高体重指数

题目描述

一个人的身高体重指数(BMI)等于其体重(千克为单位)除以其身高(米为单位)的平方。例如,一个体重为 50kg,身高为 1.6m 的人的身高体重指数为 50kg/1.6m/1.6m=19.53125kg/m2。

现在有 n 个小朋友,第 i 个小朋友的编号为 i,体重为 wi,身高为 hi。

请按照身高体重指数从高到低为小朋友们排序,数据保证不存在两个小朋友的身高体重指数完全相同。输出排序后小朋友的编号。

输入

输入 3 行,

第一行为一个正整数 n,表示小朋友的个数;

第二行为 n 个整数 w1,w2,...,wn 表示小朋友们的体重,单位为 ;

第三行为 n 个浮点数 h1,h2,...,hn 表示小朋友们的身高,单位为 m。

输出

输出一行 n 个数,表示按照身高体重指数从高到低排序后的编号。

数据范围

1≤n≤1000,10≤wi≤100,0.8≤hi≤1.9,hi均恰有两位小数。

输入样例1

3

45 33 39

1.55 1.33 1.44

输出样例1

3 1 2

25分
登录后作答