Python四级
2025年12月
一、单选题(共15题,每题2分,共30分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
答案 | B | B | B | C | B | A | B | A | C | C | D | B | C | A | C |
第1题 近日,空中客车公司表示,约6000架空客A320系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表示,在对一起飞行事故进行分析后,表明强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进而可能引发飞行异常。在这里的飞行控制系统中,执行判断的部件最可能是下面的( )。
A.辐射传感器
B.处理器
C.内存单元
D.输出设备
【答案】 B
【考察知识点】 计算机硬件组成
【解析】
题目描述太阳辐射可能影响飞行控制系统的判断,执行判断的部件是处理器(CPU)。
A:辐射传感器,用于检测辐射,不负责判断。
C:内存单元,用于存储数据,不执行判断。
D:输出设备,用于输出信息,不执行判断。
第2题小杨最近为了备考GESP,开始看网络上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,其中之一就是按照地理覆盖的范围来划分。那他平时上学所在的教学楼内的网络是⼀个( )。
A. PAN
B. LAN
C. MAN
D. WAN
【答案】 B
【考察知识点】 计算机网络分类
【解析】
教学楼内的网络覆盖范围较小,属于局域网(LAN)。
A:PAN(个人区域网),范围更小,如蓝牙。
C:MAN(城域网),覆盖一个城市。
D:WAN(广域网),覆盖范围更广,如互联网。
第3题 对于列表my_list = [[ 'a ' , 'b ' ] , 1 , 2 ],执行哪项操作可以生成新列表[ 'a ' , 'b ' , 'c ' ] ?
A. new_list = my_list [0 ] .append('c ')
B. new_list = my_list [0 ] + [ 'c ' ]
C. new_list = my_list [0 ] .extend([ 'c ' ])
D. new_list = my_list .pop(0 ) .append('c ')
【答案】 B
【考察知识点】 列表操作
【解析】
my_list = [['a','b'],1,2],要生成新列表 ['a','b','c'],需要取 my_list[0] 并添加 'c'。
A:my_list[0].append('c') 会修改原列表,返回 None,赋值给 new_list 得到 None。
B:my_list[0] + ['c'] 创建新列表 ['a','b','c'],正确。
C:my_list[0].extend(['c']) 修改原列表,返回 None。
D:my_list.pop(0) 返回 ['a','b'],然后 .append('c') 返回 None。
第4题 执行以下Python代码后,其输出是? ( )
A.[1, 2, [3, 4]]
B. [10, 2, [30, 4]]
C. [1, 2, [30, 4]]
D.[10, 2, [3, 4] ]
【答案】 C
【考察知识点】 列表浅拷贝
【解析】
b = a[:] 是浅拷贝,b[0]=10 修改整数,不影响 a;但 b[2][0]=30 修改嵌套列表,因为浅拷贝只拷贝外层,嵌套列表是引用,所以 a[2][0] 也变为30。
A:未反映修改。
B:a[0] 未被修改。
C:正确。
第5题 执行以下Python代码后,输出的结果是? ( )
A. [1, 2, 3]
B. [1, 5, 9]
C. [3, 5, 7]
D. [1, 4, 7]
【答案】 B
【考察知识点】 列表解析与矩阵对角线
【解析】
matrix[i][i] 取主对角线元素,即 [1,5,9]。
A:第一行。
C:副对角线。
D:第一列。
第6题 执行以下Python代码后,输出的结果是? ( )
A. hello
B. HELLO
C. None
D.报错
【答案】 A
【考察知识点】 字符串不可变性与函数参数传递
【解析】
函数调用(值传递),字符串不可变,函数内s = s.upper() 创建了新对象,原变量text不变。
B:需要 text = modify(text)。
C:print(text) 不会输出 None。
D:不会报错。
第7题 执行下面Python代码时,哪条调用会报错? ( )
A. func(1, 2, x=3, y=4)
B. func(a=1, b=2, 3, 4)
C. func(1, 2, [3, 4])
D. func(*[1, 2], **{'x': 3})
【答案】 B
【考察知识点】 位置参数&关键字参数
【解析】
函数定义 func(*args, **kwargs),表示先接收位置参数,再接收关键字参数。
A:正确,args=(1,2), kwargs={'x':3,'y':4}。
B:错误,关键字参数 a=1,b=2 必须在位置参数 3,4 之后,但这里关键字参数在前,位置参数在后,语法错误。
C:正确,args=(1,2,[3,4]), kwargs={}。
D:正确,使用解包。
第8题 执行以下Python代码后,输出的结果是? ( )
A. 10
B. 6
C. 7
D.报错
【答案】A
【考察知识点】 函数参数解包
【解析】
func(1,2,*[3,4]) 等价于 func(1,2,3,4),sum 返回10。
B:6是只计算了1,2,3?不对。
C:7不对。
D:不会报错。
第9题 关于Python中全局变量与局部变量的描述, 以下哪⼀项是错误的? ( )
A.局部变量在函数退出后失效
B.函数内需用global声明才能修改全局变量
C.全局变量不能和局部变量重名
D.使用nonlocal关键字可以在嵌套函数中修改其直接外层(⾮全局)作用域中的变量。
【答案】 C
【考察知识点】 全局变量与局部变量
【解析】
A:正确,局部变量在函数退出后失效。
B:正确,函数内修改全局变量需用 global 声明。
C:错误,全局变量和局部变量可以重名,局部变量会屏蔽全局变量。
D:正确,nonlocal 用于嵌套函数修改外层非全局变量。
第10题 执行以下Python代码后,输出的结果是? ( )
A. Hello
B. World
C. HelloWorld
D. WorldHello
【答案】 C
【考察知识点】 文件操作模式
【解析】
第一次以 'w' 模式写入 'Hello',第二次以 'a' 模式追加 'World',文件内容为 'HelloWorld'。
A:只读了第一部分。
B:只读了第二部分。
D:顺序错误。
第11题 在Python中, 以下哪个选项可以正确地读取一个二进制文件并打印其内容? ( )
A. with open('image .bmp ' , ' r ') as f : print(f . read())
B. with open('image .bmp ' , 'w ') as f : print(f . read())
C. with open('image .bmp ' , 'a ') as f : print(f . read())
D. with open('image .bmp ' , ' rb ') as f : print(f . read())
【答案】 D
【考察知识点】 二进制文件读取
【解析】
读取二进制文件需用 'rb' 模式。
A:'r' 是文本模式,可能出错。
B:'w' 是写入模式,会清空文件。
C:'a' 是追加模式,不能读取。
第12题 执行以下Python代码,如果文件data .txt 不存在,输出结果是? ( )
A. File read successfully .
B. File not found .
C. An error occurred : . . .
D.没有任何输出
【答案】 B
【考察知识点】 异常处理
【解析】
文件不存在会引发 FileNotFoundError,被对应 except 捕获,输出 "File not found."。
A:文件不存在,不会成功读取。
C:不会走到这个分支。
D:会有输出。
第13题 以下Python代码的时间复杂度是? ( )
A. O(n)
B. O(nlogn)
C. O(∛n)
D. O(√n)
【答案】 C
【考察知识点】 时间复杂度分析
【解析】
循环条件 i*i*i < n,即 i^3 < n,所以 i < n^(1/3),循环次数为 O(n^(1/3))。
第14题 下面程序空白处填上哪些内容可以实现程序的由小到大排序功能?( )
A. ① min_index = j ② arr [i ] , arr [min_index] = arr [min_index] , arr [i ]
B. ① min_index = i ② arr [i ] , arr [j] = arr [j] , arr [i ]
C. ① j = min_index ② arr [min_index] , arr [i ] = arr [i ] , arr [min_index]
D. ① min_index = j ② arr [j] , arr [i ] = arr [i ] , arr [j]
【答案】 A
【考察知识点】 选择排序算法
【解析】
选择排序每趟在未排序部分找到最小值,然后交换到当前位置。
①更新最小索引:min_index = j
②交换:arr[i], arr[min_index] = arr[min_index], arr[i]
第15题 执行以下Python代码,输出结果是?
A. ("book " , 20)
B. ( "pen " , 5 )
C. ("bag " , 30)
D. 30
【答案】 C
【考察知识点】 排序与lambda函数
【解析】
sorted 按每个元组的第二个元素(价格)降序排序,所以最贵的是 ("bag",30),取 [0] 得到 ("bag",30)。
A:价格20。
B:价格5。
D:不是元组。
二、判断题(共10题,每题2分,共20分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | × | × | × | √ | √ | √ | × | × | √ | × |
第1题 鸿蒙是华为公司开发的一款操作系统,那么它能够将正确的源程序翻译成目标程序,并运行。( )
【答案】 ×
【考察知识点】 操作系统功能
【解析】
操作系统是管理计算机硬件与软件资源的程序,并不负责将源程序翻译成目标程序(这是编译器的工作)。所以描述错误。
第2题 执行以下Python代码后,输出结果是 ([1 , 2 ] , 3 )。
【答案】 ×
【考察知识点】 元组与列表的可变性
【解析】
b = (a,3) 中 a 是列表,元组存储的是引用。a.append(4) 修改了列表,所以 b 变为 ([1,2,4],3),输出不是 ([1,2],3)。
第3题 使用解析式 {x:yforxin range(2 ) for y in range(2 )} 可以创建一个包含4个键值对的字典。
【答案】×
【考察知识点】 字典解析式
【解析】
{x: y for x in range(2) for y in range(2)} 会生成 {0:1, 1:1},因为键重复,后面的覆盖前面的,最终只有两个键值对。
第4题 执行以下Python代码后,输出结果是 15。
【答案】 √
【考察知识点】 lambda函数
【解析】
create_multiplier(3) 返回函数 lambda x: x*3,调用 mult(5) 返回15。
第5题 执行以下Python代码后,输出结果是True。
【答案】 √
【考察知识点】 默认参数的可变性
【解析】
函数 func 的默认参数 lst=[] 在函数定义时创建,每次调用若不提供参数,都使用同一个列表。两次调用 func() 返回同一个列表对象,所以 func() is func() 为 True。
第6题 在Python中,readline()⽅法每次读取⽂件的下⼀行内容,包括行尾的换行符。如果已到⽂件末尾,则返回⼀个空字符串。
【答案】 √
【考察知识点】 文件读取方法
【解析】
readline() 确实按行读取,包括换行符,到文件末尾返回空字符串。
第7题 执行下⾯Python代码会抛出 TypeError 异常。
【答案】 ×
【考察知识点】 类型转换
【解析】
int("3.14") 会抛出 ValueError,因为字符串表示浮点数,不能直接转整数。应先用 float 转换。
第8题 执行下⾯Python代码后,输出的结果为 [0 ]。
【答案】 ×
【考察知识点】 filter函数
【解析】
filter(None, [0,1,2,3]) 会过滤掉布尔值为假的元素,0被过滤,结果为 [1,2,3],输出不是 [0]。
第9题 选择排序算法是不稳定的,而插⼊排序算法是稳定的。
【答案】 √
【考察知识点】 排序算法的稳定性
【解析】
选择排序不稳定,插入排序稳定。
第10题 以下程序中使用了递推⽅式计算阶乘(n! = 1 x 2 x … x n),计算结果正确。
【答案】 ×
【考察知识点】 阶乘计算
【解析】
循环 for i in range(n+1) 包括0,res *= i 第一轮乘以0,结果总是0,计算错误。
三、编程题(共2题,每题25分,共50分)
3.1编程题1
试题名称:建造
时间限制:1.0 s
内存限制:512.0 MB
3.1.1题目描述
小A有⼀张M行N列的地形图,其中第i行第j列的数字aij代表坐标(i, j) 的海拔⾼度。 停机坪为⼀个 3 x 3 的区域且内部所有9个点的最大⾼度和最小⾼度之差不超过H。
小A想请你计算出,在所有适合建造停机坪的区域中,区域内部9个点海拔之和最大是多少。
3.1.2 输入格式
第⼀行三个正整数M, N, H,含义如题⾯所示。
之后M行,第i行包含N个整数ai1, ai2, · · · , aiN,代表坐标(i, j) 的⾼度。
数据保证总存在⼀个适合建造停机坪的区域。
3.1.3 输出格式
输出⼀行,代表最大的海拔之和。
3.1.4 样例
3.1.4.1 输入样例
3.1.4.2 输出样例
3.1.5 数据范围
对于所有测试点,保证1 ≤ M, N ≤ 103, 1 ≤ H, aij≤ 105。
【考察知识点】
二维数组遍历、最值计算、条件筛选。
【做题思路】
遍历所有可能的3x3区域的左上角坐标 (i, j),其中 i 范围 0 到 M-3,j 范围 0 到 N-3。
对于每个区域,提取9个元素,计算最大值、最小值和总和。
如果最大值与最小值之差不超过 H,则用总和更新 max_sum。
输出 max_sum。
3.1.6 参考程序
3.2编程题2
试题名称:优先购买
时间限制:1.0 s
内存限制:512.0 MB
3.2.1题目描述
小A有M元预算。商店有N个商品,每个商品有商品名S、价格P和优先级V三种属性,其中V为正整数,且V越小代表商品的优先级越⾼。
小A的购物策略为:
·总是优先买优先级最⾼的东西;
·如果有多个最⾼优先级商品,购买价格最低的;
·如果有多个优先级最⾼且价格最低的商品,购买商品名字典序最小的。小A想知道能购买哪些商品。
3.2.2 输入格式
第⼀行两个正整数M, N,代表预算和商品数。
之后N行,每行⼀个商品,依次为SiPiVi,代表第i个商品的商品名、价格、优先级。
数据保证不存在两个名字相同的商品。
3.2.3 输出格式
按照字典序从小到大的顺序,输出所有购买商品的商品名。
3.2.4 样例
3.2.4.1输入样例
3.2.4.2输出样例
3.2.5 数据范围
对于所有测试点,保证1 ≤ |Si|≤ 10, 1 ≤ M, Pi ≤ 105, 1 ≤ N ≤ 103, 1 ≤ Vi ≤ 10。商品名仅由小写字母组成且不存在两个相同的商品名。
【考察知识点】
自定义排序、贪心、字符串处理。
【做题思路】
按照优先级升序、价格升序、名字字典序排序。遍历排序后的商品,若价格不超过当前预算,则购买(预算减少,记录商品名)。将购买的商品名按字典序排序输出。
3.2.6 参考程序