2023 年 12 月电子学会 Python 五级考试真题(含答案和解析)
分数:100 题数:38
一、单选题(共 25 题,共 50 分)
1.下面代码的输出结果是?( )
dict1 = {1: 10, 2: 20, 3: 30}
dict2 = {2: 40, 4: 50}
dict1.update(dict2)
print(dict1)
A.{1: 10, 2: 20, 3: 30, 4: 50}
B.{1: 10, 2: 40, 3: 30, 4: 50}
C.{2: 40, 4: 50}
D.报错
答案:B
解析:dict1.update(dict2) 会将 dict2 中的键值对更新到 dict1 中。如果
dict1 和 dict2 有相同的键,则 dict1 中对应键的值会被 dict2 中的值覆盖。
所以,dict1 更新后的值为 {1: 10, 2: 40, 3: 30, 4: 50}。
2.小明正在编写一个算法,用于统计一段文本中每个单词出现的频率,并按照
频率从高到低进行排序。他使用 Python 字典来记录每个单词及其出现次数。
以下哪个选项描述了字典的特点?( )
A.字典是有序的数据结构,可以按照插入顺序访问元素
B.字典可以通过索引访问元素,小明可以通过索引获取单词和对应的出现次数
C.字典包含键-值对,其中键必须是唯一的,小明可以通过每个单词作为键来存
储并更新其出现次数
D.字典中的元素可以通过位置进行修改,小明可以根据位置修改单词和对应的
出现次数
答案:C
解析:字典的特点在于它存储的是键-值对,并且键必须是唯一的。在统计单词
频率时,小明可以将每个单词作为键,其出现次数作为值。
3.列表 a=[1,2,3,4,5,6],则 a[1]+a[2]的值是?( )
A.3
B.4
C.5
D.6
答案:C
解析:列表 a 的元素为 [1, 2, 3, 4, 5, 6]。a[1] 表示列表中的第二个元素,
其值为 2;a[2] 表示列表中的第三个元素,其值为 3。因此,a[1] + a[2] 的
值为 2 + 3 = 5。
4.列表 list1=[2023,"python","青少年","信息","素养"],则 list1[3:]的值
是?( )
A.["信息","素养"]
B.["信息"]
C.["青少年","信息","素养"]
D.["素养"]
答案:A
解析:list1[3:] 表示从列表 list1 的第四个元素开始到最后一个元素结束的
子列表。因为列表的索引是从 0 开始的,所以 list1[3] 是第四个元素,即
"信息"。因此,list1[3:] 的值为 ["信息", "素养"]。
5.列表 a=[1,2,3,4,5,6],则与 a[::-1][-1]的结果相同的表达式是?( )
A.a[1]
B.a[0]
C.a[-1]
D.a[5]
答案:B
解析:a[::-1] 是将列表 a 反转,得到 [6, 5, 4, 3, 2, 1]。然后 a[::-1]
[-1] 就是取反转后列表的最后一个元素,即原列表的第一个元素,即 1。
6.列表 list1=[2023,"python","青少年","信息","素养"],则 len(list1)的值
是?( )
A.3
B.4
C.5
D.6
答案:C
解析:列表 list1 包含 5 个元素,分别是整数 2023、字符串"python"、字符
串"青少年"、字符串"信息"和字符串"素养"。因此,len(list1) 的值等于列表
中的元素数量,即 5。
7.产生一个包含 5 个元素,公差是 3,最大数是 13 的等差数列,假设 range 推
导式为:range(a,b,c),a,b,c 的值正确的是?( )
A.1,16,3
B.1,13,3
C.0,16,3
D.1,6,1
答案:A
解析:等差数列的通项公式是 a_n = a_1 + (n-1) * d,其中 a_n 是第 n 项,
a_1 是首项,d 是公差。根据题目,最大数是 13,公差是 3,我们需要找到一
个首项 a_1,使得 a_5 = 13。计算得 a_5 = a_1 + 4 * 3 = 13,解得 a_1 =
1。因此,等差数列的前五项是 1, 4, 7, 10, 13,对应的 range 函数参数是
range(1, 16, 3)(因为 range 函数不包含结束值)。
8.sfz="987654abcd12345678",下列推导式的值为"abcd"的是?( )
A.sfz[5:9]
B.sfz[5:10]
C.sfz[6:9]
D.sfz[6:10]
答案:D
解析:在 Python 中,字符串的切片操作 sfz[start:stop] 会返回从索引
start(包含)到索引 stop(不包含)的子字符串。
9.a=[1,2,3,4,5,6,7,8,9,10,11,12],下列索引切片的值为[6,7,8]的是?(
)
A.a[6:8]
B.a[5:9]
C.a[5:8]
D.a[6:9]
答案:C
解析:列表 a 包含 12 个元素。在 Python 中,列表的切片操作 a[start:stop]
会返回从索引 start(包含)到索引 stop(不包含)的子列表。注 意这里 的索
引是从 0 开始的。
10.Python 中 print( '八 进 制 {0:o} ' .for m at(71)) 正确的输出结果是?(
)
A. 八 进 制 0:o107
B. 八 进 制 107
C. 八 进 制 0o101
D. 八 进 制 101
答案:B
解析:在 Python 的字符串 格 式 化 中,:o 用于将整数转 换 为 八 进 制 表
示。 ' {0:o} ' .for m at(71) 会将整数 71 转 换 为 八 进 制 表示。71 的 八 进 制 表示是
107,因此输出结果是 " 八 进 制 107"。注 意格 式 化 字符串中的 {0:o} 并 没 有前
缀 "0o", 这 是 Python 格 式 化 输出 八 进 制 的 标准形 式。
11.下面可以正确输出 I t ' s one o ' cloc k . 字符的 Python 语句 是?( )
A.print(" I t \' s one o \' cloc k .")
B.print( '\ it \' s one o \' cloc k . ' )
C.print( '\ it \' s one o \' cloc k .")
D.print( 'I t \' s one o \' cloc k .")
答案:A
解析:在 Python 中,字符串 内 的单引 号 可以通过在其前面 加上 反 斜线 ( \ )进
行转 义 。因此,要 打印 出包含单引 号 的字符串" I t ' s one o ' cloc k .",需要在每
个单引 号 前 加上 反 斜线 。选项 A 正确 地 使用了 这种方 法。选项 B 中的字符串开
始 部 分不正确(应为 print 而 不是 \ it),选项 C 和 D 的字符串结束 部 分不正确
(应为单引 号而 不是 双 引 号 )。
12.Python 中字符串可以使用反 斜线 进行转 义 , 实 现 某些难 以用字符表示的 效
果。下面可以 实 现 换 行符,将 光标 位置 移 到下一行开 头 的转 义 字符是?( )
A. \\
B. \ n
C. \ t
D. \ r
答案:B
解析:在 Python 中, \ n 是 换 行符的转 义 字符,用于在字符串中插入一个新行。
选项 A 中的 \\ 是反 斜线 本 身 的转 义 字符,选项 C 中的 \ t 是 制 表符的转 义 字符,
选项 D 中的 \ r 是回 车 符的转 义 字符。
13. 科技社团 需要输出每个 成员 的 姓名 、年 龄 、 身 高信息。
print(" % s 年 龄 是 % d 身 高是 % .2f" % info_tuple)
与 之 相对应的元 组赋 值 语句 是?( )
A.info_tuple=(12,"小明",1.65)
B.info_tuple=(11,1.58,"小 华 ")
C.info_tuple=("小 彬 ",1.62,13)
D. info_tuple=("小 科 ",12,1.55)
答案:D
解析:在 Python 中, %格 式 化 字符串时, % s 表示字符串, % d 表示整数, % .2f 表
示 保留两 位小数的 浮 点数。因此,与 print(" % s 年 龄 是 % d 身 高是 % .2f"
% info_tuple) 语句 相 匹配 的元 组 应 该 包含一个字符串( 姓名 ),一个整数(年
龄 ),和一个 浮 点数( 身 高)。选项 D 符 合这 个要 求 。
14.下列哪个选项可以 创建 一个 空集合 ?( )
A.{}
B.set()
C.ne w set{}
D.ne w ()
答案:B
解析:在 Python 中, 创建空集合 应 该 使用 set()函数, 而 不是使用 花括号 {}
(因为不 带任何 元素的 花括号 在 Python 中 默认 表示一个 空 字典)。
15.以下哪个选项可以 向集合 对 象 中 添加 一个元素?( )
A. m y_set.re m o v e(ele m ent)
B. m y_set.append(ele m ent)
C. m y_set.pop()
D. m y_set.add(ele m ent)
答案:D
解析:在 Python 中, 向集合添加 元素应 该 使用 add() 方 法。选项 A 中的
re m o v e(ele m ent)是用于从 集合 中 移除 元素的,选项 B 中的 append(ele m ent)是
用于 向 列表 添加 元素的,选项 C 中的 pop()是用于从 集合 中 随机移除 并返回一个
元素的。
16.下列 程 序段输出的结果是?( )
st = ' abcde '
def change(n):
s = ''
for i in range(-1,-len(n),-1):
s += st[i]
return s
print(st, ' , ' ,change(st))
A.abcde,edcba
B.edcba
C.abcde,edcb
D.abcde
答案:C
解析:在 Python 中,range 函数的结束值是不包含的, 而 且 这里 的开始值是
-1,结束值是 -len(n)(对于 st = ' abcde ' 来 说 ,-len(n) 是 -5), 步长 是
-1
,即 i 只能 到-4。
17.lis=list(range(10,20,2))
def change(lis):
lis.re v erse()
print(lis)
change(lis)
print(lis)
以 上程 序段输出的 内容 是?( )
A.[18, 16, 14, 12, 10]
[18, 16, 14, 12, 10]
B.[20, 18, 16, 14, 12, 10]
[20, 18, 16, 14, 12, 10]
C.[18, 16, 14, 12, 10]
[10, 12, 14, 16, 18]
D.[20, 18, 16, 14, 12, 10]
[10, 12, 14, 16, 18, 20]
答案:A
解析:lis=list(range(10,20,2)) 创建 了一个包含从 10 到 18( 步长 为 2)
的整数的列表。change(lis) 函数 内部调 用了 lis.re v erse(), 这 会反转列表
lis 中的元素顺序。反转后,在 change 函数 内部打印 ,和在函数 外部打印
lis ,结果 都 是一 样 的。
18.表达式 dict(zip(range(10,0,-2),range(0,10,2)))的值,不可 能 是以下哪
一项?( )
A.{0: 10, 4: 6, 2: 8, 6: 4, 8: 2}
B.{10: 0, 4: 6, 2: 8, 6: 4, 8: 2}
C.{8: 2, 10: 0, 4: 6, 2: 8, 6: 4}