GESP Python三级2026年03月认证真题解析
「GESP练题小程序艾墨舟编程小先锋」专为GESP考生打造的免费题库。涵盖图形化/Python/C++全真题,支持真题模考、考前预测、错题整理与学习统计,一站式攻克客观题。
一、整体分析
本次考试为Python三级认证,考查知识点覆盖三级考纲核心内容:数据编码与进制转换、位运算、算法描述、一维数组(列表)与字符串操作、枚举与模拟算法。题型包括15道选择题、10道判断题和2道编程题。
---✨ 第1题 ✨---
题目:2026年春节联欢晚会节目《武BOT》中,若将机器人视作计算机系统,下列哪一项不能作为输入设备?
选项:
A. 用于检测重心的重力传感器
B. 预装的AI算法程序
C. 接收动作指令的遥控器
D. 拍摄其他机器人的摄像头
答案:B
解析:
本题考查计算机硬件基础知识。输入设备是指向计算机系统输入数据和信息的设备。
| |
|---|
| 传感器属于输入设备,用于检测物理量并转换为电信号输入计算机。 |
| 程序是软件,属于系统的一部分,不是输入设备 |
| |
| |
考查知识点:计算机硬件组成、输入设备概念。
---✨ 第2题 ✨---
题目:代码中标记L1的行(if val > Max:)在流程图中应使用什么图形?
答案:D
解析:
本题考查流程图符号规范。
| |
|---|
| |
| |
| |
| 菱形框用于表示判断/分支。if val > Max:是一个条件判断,对应流程图中的判断框。 |
考查知识点:流程图符号、算法描述。
---✨ 第3题 ✨---
题目:下列哪个表达式不能正确转换为十进制整数10?
答案:D
解析:
本题考查Python的int()函数与进制转换。
| |
|---|
| |
| 八进制数12转换为十进制:1*8 + 2 = 10。 |
| 二进制数1010转换为十进制:8 + 2 = 10。 |
| 二进制数10转换为十进制是2,不是10 |
考查知识点:进制转换、int()函数用法。
---✨ 第4题 ✨---
题目:要获取32位整数0x48B2D6F1的最低字节(比特位0-7),正确的表达式是?
答案:A
解析:
本题考查位运算中的按位与操作。最低字节对应二进制最低8位,十六进制表示为最后两位(因为每两位十六进制对应8位二进制)。
| |
|---|
| 正确。0xFF二进制为11111111,按位与操作会保留原数最低8位,其余位清零。 |
| |
C. (0x48B2D6F1 >> 8) & 0xFF | 先右移8位,再取低8位,得到的是原数的第8-15位,不是最低字节。 |
| |
考查知识点:位运算(与、或、异或、移位)、十六进制与二进制对应关系。
---✨ 第5题 ✨---
题目:执行以下代码后,输出结果是?
lst = [10, 20, 30, 20]
lst.remove(20)
print(lst)
答案:A
解析:
本题考查列表的remove()方法。remove(x)会删除列表中第一个出现的元素x。
- 执行
lst.remove(20):删除第一个20,列表变为[10, 30, 20]
考查知识点:列表操作、remove()方法。
---✨ 第6题 ✨---
题目:对于列表data = [1, 2, 3, 4, 5],执行data[1:4] = [10, 20]后,data的值是?
答案:D
解析:
本题考查列表切片赋值。切片赋值会用右侧列表替换原列表中切片选中的部分。
- 切片
data[1:4]选中索引1到3的元素:[2, 3, 4] - 用
[10, 20]替换该切片,列表变为:[1, 10, 20, 5]
考查知识点:列表切片、切片赋值。
---✨ 第7题 ✨---
题目:执行以下代码后,输出结果是?
result = [x if x > 2 else 0 for x in range(1, 5)]
print(result)
答案:C
解析:
本题考查列表推导式与条件表达式。range(1, 5)生成[1, 2, 3, 4]。对于每个x:
- 若x > 2,则取x本身
- 否则取0
因此结果为:[0, 0, 3, 4]
考查知识点:列表推导式、条件表达式。
---✨ 第8题 ✨---
题目:执行以下代码后,输出结果是?
my_zip = zip((1, 2), ('a', 'b'))
print(tuple(my_zip))
print(list(my_zip))
答案:C
解析:
本题考查zip()函数与迭代器特性。zip()返回一个迭代器。
my_zip = zip((1, 2), ('a', 'b')):创建zip迭代器,包含(1, 'a')和(2, 'b')。print(tuple(my_zip)):将迭代器转换为元组,输出((1, 'a'), (2, 'b')),同时迭代器被消耗完毕。print(list(my_zip))
考查知识点:zip()函数、迭代器、可迭代对象。
---✨ 第9题 ✨---
题目:下列关于元组解包的说法,哪一项是正确的?
答案:B
解析:
本题考查元组解包的语法规则。
| |
|---|
| 错误 |
| 正确。例如a, *b, c = (1,2,3,4),b为[2,3]。 |
| 错误 |
| 错误 |
考查知识点:元组解包、可迭代对象解包。
---✨ 第10题 ✨---
题目:执行以下代码后,输出结果是?
data = {'Math': 90, 'Science': 85, 'English': 92}
subject = 'Science'
if subject in data:
grade = data.get(subject, 0)
if grade >= 90:
level = 'A'
elif grade >= 80:
level = 'B'
else:
level = 'C'
print(level)
答案:B
解析:
本题考查字典操作与条件分支。
subject = 'Science'grade = 85,满足grade >= 80且不满足grade >= 90,因此level = 'B'。
考查知识点:字典访问、get()方法、条件语句。
---✨ 第11题 ✨---
题目:在Python中,已知d = {'a': 1, 'b': 2},则d.keys()的数据类型是?
答案:B
解析:
本题考查字典视图对象。在Python 3中,dict.keys()返回的是dict_keys视图对象,它是一个动态视图,反映字典键的变化。
考查知识点:字典方法、视图对象。
---✨ 第12题 ✨---
题目:执行以下代码后,输出结果是?
s = "programming"
vowels = "aeiou"
count = 0
for char in s:
if char not in vowels:
count += 1
print(count)
答案:C
解析:
本题考查字符串遍历与条件计数。统计字符串中非元音字母的数量。
- 非元音字母:p, r, g, r, m, m, n, g 共8个
考查知识点:字符串遍历、成员运算符in。
---✨ 第13题 ✨---
题目:以下哪个操作可以返回两个集合中独有的元素(对称差集)?
答案:C
解析:
本题考查集合运算。对称差集指属于A或属于B,但不同时属于A和B的元素集合。
考查知识点:集合运算、对称差集。
---✨ 第14题 ✨---
题目:执行以下代码后,输出结果是?
set1 = {1, 2, 3}
set2 = set1
set2.add(4)
print(set1)
答案:A
解析:
本题考查集合的引用特性。set2 = set1使得set2和set1指向同一个集合对象,因此通过set2修改集合,set1也会看到变化。
set2.add(4):向该集合添加4,集合变为{1, 2, 3, 4}print(set1)
考查知识点:集合操作、对象引用。
---✨ 第15题 ✨---
题目:有10根长度分别为1,2,...,10的木棒,现需要从中选出3根组成一个三角形。三角形的成立条件是任意两边之和大于第三边。以下程序通过枚举顺序递增的三边长度组合来统计有效三角形的数量,请补全代码中缺失的条件判断部分。
答案:A
解析:
本题考查三角形判定条件与枚举算法。
- 循环变量a, b, c已满足
a ≤ b ≤ c(因为range(a, 11)和range(b, 11)) - 由于
a ≤ b ≤ c,只需检查最短两边之和大于最长边,即a + b > c(如果此条件成立,则a + c > b和b + c > a自动成立)
考查知识点:枚举算法、三角形判定、条件优化。
---✨ 第16题 ✨---
题目:小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。
答案:A. 正确
解析:
本题考查操作系统概念。现代智能手表具备通话、信息、应用等功能,需要操作系统(如Wear OS、watchOS等)来管理硬件和运行软件。
考查知识点:操作系统应用。
---✨ 第17题 ✨---
题目:对于8位有符号整数(补码表示),1000 0000表示的是-128。
答案:A. 正确
解析:
本题考查补码表示。8位有符号整数补码表示范围是-128到127。10000000是-128的补码表示(最高位为1表示负数,其余位按位取反加1可得绝对值)。
考查知识点:补码表示、数据编码。
---✨ 第18题 ✨---
题目:在Python中,任何一个十进制整数都可以精确地转换为一个二进制整数,但并非所有十进制小数都能精确地转换为二进制小数。
答案:A. 正确
解析:
本题考查进制转换精度。整数转换是精确的。但有些十进制小数(如0.1)在二进制中是无限循环小数,计算机用有限位表示时会存在精度误差。
考查知识点:进制转换、浮点数精度。
---✨ 第19题 ✨---
题目:表达式(x << 3) - (x << 1)的计算结果与x * 10等价。
答案:A. 正确
解析:
本题考查位运算与算术运算关系。
- x << 3 等价于 x * 8
- x << 1 等价于 x * 2
- 因此(x << 3) - (x << 1) = 8x - 2x = 6x,不是10x。
实际上,x * 10可以通过(x << 3) + (x << 1)实现(8x + 2x = 10x)。
考查知识点:位运算、移位与乘法的关系。
---✨ 第20题 ✨---
题目:使用=运算符将一个列表赋值给另一个变量时,会创建一个内容相同但独立的新列表。
答案:B. 错误
解析:
本题考查列表的赋值与复制。=操作是引用赋值,两个变量指向同一个列表对象。要创建独立副本,需使用copy()方法或切片list2 = list1[:]。
考查知识点:列表赋值、对象引用。
---✨ 第21题 ✨---
题目:执行以下代码后,输出结果是True。
tuple1 = (1, 2)
tuple2 = (3, 4)
result = tuple1 + tuple2
print(result is (1, 2, 3, 4))
答案:B. 错误
解析:
本题考查元组拼接与对象标识符is。is比较两个对象是否是同一个对象(内存地址相同)。元组拼接会创建新元组,即使内容相同,也不是同一个对象。应使用==比较值。输出为False。
考查知识点:元组操作、is与==区别。
---✨ 第22题 ✨---
题目:执行以下代码后,输出结果是1。
text = "i love china"
char_count = {}
for char in text:
if char != ' ':
char_count[char] = char_count.get(char, 0) + 1
print(char_count.get('i', 0))
答案:B. 错误
解析:
本题考查字典统计与字符串遍历。代码统计非空格字符出现次数。字符串"i love china"中:
- 字符'i'出现两次(第一个单词和china中的i)
- 但注意:Python区分大小写,'i'和'I'不同。字符串中是小写'i',确实出现两次。
- 因此char_count.get('i', 0)返回2,不是1。
考查知识点:字典统计、字符串遍历、大小写敏感。
---✨ 第23题 ✨---
题目:str.join()方法可以高效地连接一个列表中的多个元素,但要求该列表内的所有元素必须是字符串类型,否则会引发错误。
答案:A. 正确
解析:
本题考查join()方法的使用限制。join()方法要求可迭代对象中的所有元素都是字符串类型。如果包含非字符串元素(如整数),会抛出TypeError。
考查知识点:字符串方法、类型要求。
---✨ 第24题 ✨---
题目:在Python中,集合的元素可以是列表或字典。
答案:B. 错误
解析:
本题考查集合元素的限制。集合的元素必须是可哈希(hashable)类型。列表和字典是可变类型,不可哈希,因此不能作为集合元素。元组(若其元素也可哈希)可以作为集合元素。
考查知识点:集合特性、可哈希性。
---✨ 第25题 ✨---
题目:str()函数可以将任何列表转换为一个字符串,该字符串是只由列表中的所有元素直接拼接而成的字符串。
答案:B. 错误
解析:
本题考查str()函数的作用。str(list)会将整个列表(包括方括号、逗号、空格)转换为字符串,例如str([1,2,3])得到"[1, 2, 3]",而不是元素拼接的"123"。要拼接元素,应使用''.join(map(str, list))。
考查知识点:str()函数、列表转字符串。
---✨ 第26题 ✨---
编程题1:二进制回文串
题目大意
给定正整数n,统计1到n之间有多少个数的二进制表示(不含前导零)是回文串。
解题思路
- 枚举法
- 二进制转换:对每个数,通过除2取余法得到二进制位列表(逆序,即最低位在前)。
- 回文判断
- 计数
参考代码
n = int(input())
ans = 0
for i in range(1, n + 1):
t = i
a = []
# 分解为二进制表示,最低位在前
while t > 0:
a.append(t % 2)
t //= 2
b = a[:] # 复制列表
a.reverse() # 反转得到正常顺序
if b == a: # 判断是否为回文
ans += 1
print(ans)
复杂度分析
- 时间复杂度:O(n log n),每个数需要O(log n)时间转换二进制。
考查知识点
枚举算法、进制转换、回文判断、列表操作。
---✨ 第27题 ✨---
编程题2:凯撒密码
题目大意
已知一对明文-密文(已破解),求凯撒密码的偏移量,并用此偏移量解密另一段密文。
解题思路
- 求偏移量:通过已破解的明密文对第一个字符计算偏移量
d = ord(明文字符) - ord(密文字符)。 - 解密
- 计算
(ord(ch) - ord('A') + d) % 26,得到明文字符在字母表中的位置(0-25)。 - 加
ord('A')得到ASCII码,再转换为字符。 - 注意
参考代码
# 已被破解的明文
s1 = input()
# 已被破解的密文
s2 = input()
# 待破解的密文
s3 = input()
# 计算偏移量
# 注意:这里用s1[0] - s2[0]得到的是解密时的偏移量(密文->明文)
d = ord(s1[0]) - ord(s2[0])
ans = ""
for ch in s3:
# 将字符转换为0-25的数字,加上偏移量d,取模26
new_pos = (ord(ch) - ord('A') + d) % 26
# 转换回字符
ans += chr(new_pos + ord('A'))
print(ans)
复杂度分析
考查知识点
字符串处理、字符编码、模运算、凯撒密码原理。
三、总结
本次Python三级考试重点考查:
1. 基础知识:计算机硬件、流程图、进制转换、位运算。
2. Python数据结构:列表、元组、字典、集合的操作与特性。
3. 算法思想:枚举算法在三角形判定和回文数统计中的应用。
4. 字符串处理:凯撒密码的实现,涉及字符编码与模运算。
考生需熟练掌握Python基本数据结构的方法与特性,理解位运算与进制转换,并能够运用枚举法解决简单实际问题。