Python三级
2025年12月
一、单选题(共15题,每题2分,共30分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
答案 | B | B | C | A | B | B | B | B | B | C | C | A | B | A | D |
1、近日,空中客车公司表示,约6000架空客A320系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表示,在对一起飞行事故进行分析后,表明强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进而可能引发飞行异常。在这里的飞行控制系统中,执行判断的部件最可能是下面的( )。
A.辐射传感器
B.处理器
C.内存单元
D.输出设备
【答案】B
【考察知识点】计算机硬件组成及功能
【解析】飞行控制系统中,辐射传感器仅负责采集太阳辐射相关数据,无逻辑判断能力;处理器(CPU)是核心运算和逻辑判断部件,可执行 “判断” 核心逻辑;内存单元仅用于临时存储数据和指令,不具备判断功能;输出设备仅用于反馈系统结果(如显示、告警)。因此执行判断的部件是处理器。
2、小杨最近为了备考GESP,开始看网络上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,其中之一就是按照地理覆盖的范围来划分。那他平时上学所在的教学楼内的网络是一个( )。
A.PAN
B.LAN
C.MAN
D.WAN
【答案】B
【考察知识点】计算机网络的分类
【解析】按地理覆盖范围,计算机网络分为四类:PAN(个人区域网)覆盖几米范围(如蓝牙、无线键鼠);LAN(局域网)覆盖局部区域(如教学楼、办公室、家庭);MAN(城域网)覆盖整个城市;WAN(广域网)跨地域(如互联网、跨省企业内网)。教学楼内的网络属于局域网(LAN)。
3、下面选项中最大的数是?( )
A.(42)10
B.(2F)16
C.(110111)2
D.(41)8
【答案】C
【考察知识点】进制转换
【解析】将所有选项转换为十进制后比较:
A选项:(42)10=42;
B选项:十六进制(2F)16=2×16+15=47;
C选项:二进制(110111)2=1×32+1×16+0×8+1×4+1×2+1×1=55;
D选项:八进制(41)8=4×8+1=33。
综上,最大的数是C选项。
4、在Python中,有一个整数变量
,现需要将其二进制表示中的第三位(从右向左,最低位为第0位)设置为1,而其它位保持不变。下列哪段代码可以正确实现此功能?( )
A.x = x | (1 << 3)
B.x = x & (1 << 3)
C.x = x ^ (1 << 2)
D.x = x | 0b100
【答案】A
【考察知识点】位运算
【解析】需求是将整数x二进制表示的第三位(从右数,最低位为第0位)设为1,其他位不变:
A选项:1 << 3 生成二进制1000(仅第三位为1),x | (1 << 3) 是按位或运算,可保留x原有位,仅将第三位强制置1,符合需求;
B选项:x & (1 << 3) 是按位与运算,会仅保留第三位的值,其他位清零,不符合;
C选项:1 << 2 对应第二位,且^(按位异或)会翻转该位值(0变1、1变0),而非强制置1,位置和运算逻辑均错误;
D选项:0b100是二进制第二位(值为4),位置错误,无法修改第三位。
5、执行下面Python代码后,输出的结果是?( )
A.[3, 2]
B.[1, 2]
C.[1, 3]
D.[3, 3]
【答案】B
【考察知识点】列表
【解析】a.copy()对列表a执行拷贝,会生成一个新的列表b,a和b指向内存中不同的存储空间,修改a的元素不会影响b。
6、Python表达式 [x % 3 for x in range(10) if x % 2 == 0] 的值是?
A.[0, 1, 0, 1, 0]
B.[0, 2, 1, 0, 2]
C.[0, 1, 2, 0, 1]
D.[0, 2, 4, 6, 8]
【答案】B
【考察知识点】列表推导式的执行逻辑
【解析】列表推导式[x % 3 for x in range(10) if x % 2 == 0]的执行步骤:
range(10)生成0-9的整数序列;
if x % 2 == 0 筛选出偶数:0、2、4、6、8;
对筛选后的每个数执行x % 3(取余):
0%3=0,2%3=2,4%3=1,6%3=0,8%3=2;
最终推导式结果为[0, 2, 1, 0, 2]。
7、已知 lst = list(range(10)),即 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。要获取切片 [8, 6, 4, 2],应该使用的切片操作是?
A.lst[-2:2:-2]
B.lst[8:1:-2]
C.lst[8:2:-2]
D.lst[-2:1:2]
【答案】B
【考察知识点】列表切片的使用
【解析】已知lst = [0,1,2,3,4,5,6,7,8,9],切片格式为lst[起始索引:结束索引:步长](左闭右开,步长为负表示反向取数),目标是获取[8,6,4,2]:
A选项:lst[-2:2:-2],起始- 2 对应索引8,结束2对应索引2(不包含),步长- 2,取到8、6、4(缺少2),不符合;
B选项:lst[8:1:-2],起始8,结束1(不包含),步长- 2,取到8、6、4、2,符合需求;
C选项:lst[8:2:-2],结束2对应索引2(不包含),取到8、6、4(缺少2),不符合;
D选项:步长为2(正向),无法反向取数,结果为空列表[]。
第8题 分析以下代码段,最终的输出结果是什么?( )
A.True
B.False
C.程序报错
D.{'debug': True, 'port': 8080, 'timeout': 30}
【答案】B
【考察知识点】字典的键的唯一性
【解析】Python字典的键具有唯一性,若重复定义同一键,后定义的键值对会覆盖前一个。代码中config字典里'debug'先被赋值为True,后又赋值为False,最终config['debug']的取值为False。
9、合并两个字典d1 = {'a':1} 和 d2 = {'b':2} 的正确方式是?( )
A.d1 + d2
B.d1.update(d2)
C.d1.extend(d2)
D.d1.append(d2)
【答案】B
【考察知识点】字典的合并方法
【解析】逐一分析选项:
A选项:字典不支持+运算符拼接,执行会报错;
B选项:d1.update(d2)是字典合并的标准方法,会将d2的键值对原地合并到d1中(d1变为{'a':1, 'b':2}),符合需求;
C选项:extend()是列表的方法,用于追加可迭代对象,字典无此方法,执行报错;
D选项:append()是列表的方法,用于追加单个元素,字典无此方法,执行报错。
10、关于字符串的不可变性,下列说法正确的是?( )
A.可以通过索引直接修改字符串中的某个字符
B.字符串的 replace 方法会直接修改原字符串
C.任何看似修改字符串内容的操作(如 upper(), lower() 等)都会返回一个新字符串,原始字符串不受影响。
D.字符串拼接操作 += 会直接在原字符串末尾追加内容
【答案】C
【考察知识点】Python字符串的不可变性
【解析】字符串是不可变对象,即无法直接修改原有字符串的内容,所有看似 “修改” 的操作都会生成新字符串:
A选项:无法通过索引修改字符串字符(如s[0] = 'A' 会抛出TypeError),错误;
B选项:replace()方法会返回修改后的新字符串,原字符串保持不变,错误;
C选项:upper()、lower()、replace()等方法均返回新字符串,原始字符串不受影响,正确;
D选项:+=看似修改原字符串,实际是创建新字符串并重新赋值(原字符串内存地址改变),并非直接追加,错误。
11、对于字符串 s = "Hello, Python",执行s.find("Java")和s.index("Java")的结果分别是?( )
A.-1,-1
B.程序报错,程序报错
C.-1,程序报错
D.程序报错,-1
【答案】C
【考察知识点】字符串
【解析】对字符串s = "Hello, Python"执行两个方法:
s.find("Java"):查找子串,若不存在返回- 1;
s.index("Java"):查找子串,若不存在会抛出ValueError(程序报错);
因此结果是- 1 和程序报错。
12、执行 (1, 2) + (3, 4) 的结果是?( )
A.(1, 2, 3, 4)
B.(4, 3, 2, 1)
C.(1, 3, 2, 4)
D.报错
【答案】A
【考察知识点】元组的拼接操作
【解析】元组支持+运算符进行拼接,会将两个元组的元素按顺序合并为一个新元组。(1, 2) + (3, 4) 会将(1,2)和(3,4)的元素依次合并,结果为(1, 2, 3, 4)。
13、在以下场景中,使用元组比使用列表更合适的是?( )
A.存储一个需要频繁更新用户分数的排行榜。
B.表示一个二维平面上的点坐标
。
C.缓存一批需要动态增删的临时数据。
D.存储一组程序运行时需要不断追加记录的日志信息。
【答案】B
【考察知识点】Python元组与列表的特性及适用场景
【解析】元组的核心特性是不可变、有序,适合存储固定、无需修改的数据;列表的核心特性是可变、有序,适合动态增删改的数据:
A选项:排行榜需频繁更新分数,适合列表;
B选项:二维平面点坐标(x,y)是固定值,无需修改,适合元组;
C选项:临时数据需动态增删,适合列表;
D选项:日志信息需不断追加,适合列表。
14、表达式 {x**2 for x in range(-2, 3)} 的显示结果可能是?( )
A.{0, 1, 4}
B.{4, 1, 0, 1, 4}
C.{0, 1, 2, 4}
D.{1, 4, 9}
【答案】A
【考察知识点】Python集合推导式及集合的去重特性
【解析】集合推导式{x**2 for x in range(-2, 3)}的执行步骤:
range(-2, 3) 生成- 2、-1、0、1、2;
计算每个数的平方:(−2)2=4、(−1)2=1、02=0、12=1、22=4;
集合具有自动去重特性,最终结果为{0, 1, 4}。
15、现有集合s1={1, 2, 3} 和s2 = {3, 4, 5},表达式(s1 - s2) | (s2 - s1) 的结果是( )
A.{1, 2}
B.{4, 5}
C.{3}
D.{1, 2, 4, 5}
【答案】D
【考察知识点】集合的差集、并集运算
【解析】已知s1 = {1, 2, 3},s2 = {3, 4, 5},分步解析:
s1 - s2:差集,取s1中有、s2中没有的元素 → {1, 2};
s2 - s1:差集,取s2中有、s1中没有的元素 → {4, 5};
|:并集,合并两个差集的元素 → {1, 2, 4, 5}。
二、判断题(共10题,每题2分,共20分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | × | √ | × | √ | × | √ | × | × | × | √ |
1、鸿蒙是华为公司开发的一款操作系统,那么它能够将正确的源程序翻译成目标程序,并运行。( )
【答案】×
【考察知识点】操作系统
【解析】操作系统的核心功能是管理计算机硬件和软件资源(如进程、内存、设备),而 “将源程序翻译成目标程序” 是编译器(编译型语言,如C/C++)或解释器(解释型语言,如Python)的功能,并非操作系统的功能。因此该说法错误。
2、二进制数的奇偶性可以通过其最低位(最右边的位)来判断:最低位为0是偶数,为1是奇数。
【答案】√
【考察知识点】二进制数的奇偶性判断
【解析】二进制数的最低位(最右侧位)对应20=1:若最低位为0,该数可被2整除(偶数);若最低位为1,该数不可被2整除(奇数)。
3、在Python中,print(~0) 的输出结果仍是0。
【答案】×
【考察知识点】位运算
【解析】Python中~是按位取反运算符,运算规则为~x = -x-1。因此~0 = -0-1 = -1,输出结果为-1而非0。该说法错误。
4、执行下面Python代码后,输出的结果是 ['apple', 'grape', 'banana', 'cherry', 'orange']。
【答案】√
【考察知识点】列表的insert()和append()方法
【解析】代码执行过程:
fruits = ['apple', 'banana', 'cherry'],初始化列表;
fruits.insert(1, 'grape'),在索引1的位置插入grape,列表变为['apple', 'grape', 'banana', 'cherry'];
fruits.append('orange'),在列表末尾追加orange,列表变为['apple', 'grape', 'banana', 'cherry', 'orange'];
最终打印结果与题目描述一致,该说法正确。
5、下面Python代码的作用是统计字符串 s 中每个字符出现的次数。
【答案】×
【考察知识点】字典get()方法的使用及字符计数逻辑
【解析】dict_count.get(char)若char未在字典中,会返回None,执行None + 1 会抛出TypeError,无法完成字符计数。正确写法应为dict_count.get(char, 0) + 1(指定默认值0)。因此该代码无法实现统计功能,说法错误。
6、执行下面Python代码后,输出的结果是 2。
【答案】√
【考察知识点】字符串
【解析】s.count("aa")统计字符串中非重叠子串"aa"的出现次数:
s = "aaaaa" 可拆分为aa(索引0-1)、aa(索引2-3),索引1-2的aa与前一个重叠,不计入;
最终计数结果为2,该说法正确。
7、执行代码 a = (1, 2, 3); a.sort() 后,打印 a 会输出[1, 2, 3]。
【答案】×
【考察知识点】元组的不可变性
【解析】元组是不可变对象,没有sort()方法(sort()是列表的原地排序方法),执行a.sort()会抛出AttributeError,无法完成排序。因此该说法错误。
8、表达式 {} 在Python中可以创建一个空集合。
【答案】×
【考察知识点】Python空集合与空字典的创建方式
【解析】{}在Python中默认创建空字典;创建空集合需使用set()函数(如s = set())。因此该说法错误。
9、字符串可以通过 list() 函数直接转换为列表,但无法通过 tuple() 函数直接转换为元组。
【答案】×
【考察知识点】字符串与列表、元组的转换
【解析】字符串可通过list()转为列表(每个字符为列表元素),也可通过tuple()转为元组(每个字符为元组元素)。例如s = "abc",tuple(s)结果为('a', 'b', 'c')。因此该说法错误。
10、以下代码是使用枚举算法,找出所有各位数字的立方和等于该数本身的三位数。
【答案】√
【考察知识点】枚举算法的应用
【解析】枚举算法的核心是遍历所有可能的情况,验证条件并筛选结果:
代码遍历100-999的所有三位数(枚举所有可能);
拆分每个数的百位、十位、个位;
验证 “各位数字立方和等于自身” 的条件,符合则输出;
完全符合枚举算法的逻辑,该说法正确。
三、编程题(共2题,每题25分,共50分)
编程题1
题目描述
小杨是学校网络安全小组的成员,今天他的任务是设计一个“密码强度检测器”,帮助同学们检查自己的密码是否足够安全。一个安全的密码需要满足以下条件:
例如:
输入格式
第一行一个正整数T,代表需要安全检测的密码组数。
对于每组密码,一行包含一个字符串,代表需要安全检测的密码。
输出格式
对于每组密码,输出一行,如果满足强度要求输出Y,否则输出N。
样例
输入样例
6
PAs1s2an
1a2bCql3
Pa12bsna
ab1da3cd
Paabdbcd
Pa2
输出样例
Y
Y
Y
N
N
N
样例解释
数据范围
对于所有测试点,保证1 ≤T ≤100,并且每组密码长度不超过100且至少为1,每组密码仅由大小写字母和数字组成。
【考察知识点】字符串
【解析】
需求分析:验证密码是否满足三个条件(长度≥8、含大写字母、含数字),满足输出Y,否则输出N;
核心逻辑:
读取测试用例数T,遍历每个密码;
len(password) >= 8 判断长度是否达标;
any(c.isupper() for c in password) 高效判断是否含大写字母(any()找到一个满足即返回true);
any(c.isdigit() for c in password) 高效判断是否含数字;
三个条件同时满足则输出Y,否则输出N;
参考程序
编程题2
题目描述
小杨的班级要举办一个环保手工作品展览,老师请小杨去文具店购买M种不同的文具(例如:铅笔、橡皮、尺子等)。
商店里共有N件文具,每件文具都有一个种类编号(从1到M)和价格。
小杨的预算有限,他想了一个聪明的办法:对于每种文具,他只买最便宜的那一件(如果同种文具有多件价格相同且都是最便宜的,他只会购买其中的一件)。请你帮小杨计算出,买齐这M种文具一共需要花费多少钱。
输入格式
第一行两个正整数M,N,代表文具的种类数和总数。
之后N行,每行两个正整数Ki和Pi,分别代表第i件文具的种类编号和它的价格。数据保证每个种类至少有一件文具可供购买。
输出格式
输出一行,代表购买文具的总价。
样例
输入样例
2 5
1 1
1 2
1 1
2 3
2 10
输出样例
4
样例解释
文具清单如下:
小杨的选择过程:对于种类1:有三件商品,价格分别为1,2,1。其中最便宜的价格是1。对于种类2:有两件商品,价格分别为3,10。其中最便宜的价格是3。
计算总价:小杨购买这两类文具的总花费为1+3=4。
数据范围
对于所有测试点,保证1 ≤ M ≤ N ≤ 105,1 ≤ Ki≤ M,1 ≤ Pi≤ 103。
【考察知识点】枚举算法
【解析】
需求分析:统计每种文具的最低价格,求和得到买齐M种文具的总花费;
核心逻辑:
初始化min_prices列表,长度为M+1(索引0占位),初始值为正无穷(float('inf')),确保首次读取的价格能覆盖初始值;
遍历每件文具,若当前价格低于该类文具的已记录最低价,则更新;
对min_prices[1:M+1]求和(仅取1~M类的最低价格),输出总和;
参考程序
策划:GESP技术委员会副主席 刘晓庆
技术支持:朱浩淼