阶段二测试
1、
以下代码的输出是什么?
(单选题,1.5分)
A.
报错
B.
2 b
C.
2 a
D.
1 a
2、
len(d)
计算字典的键值对数量,结果为1
。d[1]
实际访问的是等价键True
对应的值,输出 b
以下代码输出的结果是____。
(填空题,5分)
9
3、
以下代码的输出是什么?
(单选题,1.5分)
A.
4
B.
0
C.
1
D.
2
print(sum(lst) if lst else 0)
:
如果 lst
非空,计算并输出 lst
中所有元素的和。
如果 lst
为空,输出 0。
这里 lst = [1, 3]
,所以 sum(lst) = 4
,输出 4
。
4、
关于以下操作的时间复杂度,说法正确的是?
(单选题,1.5分)
A.
d['a']是O(n)
B.
s[::-1]是O(1)
C.
'world' in s是O(1)
D.
3 in lst是O(n)
s = "hello world"
定义了一个字符串s
,其内容为"hello world"
。列表lst
:lst = [1, 2, 3, 4, 5]
定义了一个列表lst
,其中包含整数1
到5
。字典d
:d = {'a': 1, 'b': 2}
定义了一个字典d
,其中有两个键值对:'a': 1
和'b': 2
。
5、
以下代码的输出是什么?
(单选题,1.5分)
A.
4
B.
3
C.
2
D.
1
print(len(result))用于输出集合result中元素的个数。
由于result集合中有4个元素,所以len(result)的值为4。
6、
关于Python容器的内存分配策略,以下说法错误的是?
(单选题,1.5分)
A.
dict在删除元素后会自动收缩内存
B.
tuple的内存分配是一次性的
C.
list采用过度分配策略减少resize次数
D.
set的存储结构与dict类似
答案A
set(集合)是一个无序且不重复元素的集合,其底层实现通常是通过哈希表来完成的,虽然和dict的底层实现有一定相似性(都基于哈希表),但set只存储键,不存储值,而dict是键值对的存储结构,二者的存储结构并不完全相同。所以该选项说法错误。
7、
以下代码的运行结果是____。
(填空题,5分)
5
count_chars(s)
统计了字符串中每个字符的出现次数。对于字符串 "abracadabra"
,字符 'a'
出现了5次,字符 'z'
未出现。最终输出为 5
。
result.get('z', 0)获取字符'z'在字典result中的计数,由于字符串"abracadabra"中不存在字符'z',所以返回默认值0。
将上述两个结果相加,即5 + 0 = 5
8、
以下代码的输出是什么?
(单选题,1.5分)
A.
ba
B.
ab
C.
aa
D.
bb
两个相加为bb
9、
以下代码的输出是什么?
(单选题,1.5分)
A.
False True
B.
False False
C.
True True
D.
True False
10、
关于容器操作的时间复杂度,以下说法正确的是?
(单选题,1.5分)
A.
列表的in操作是O(1)
B.
字典的keys()操作是O(n)
C.
字符串拼接是O(1)
D.
集合的交集操作是O(1)
答案b
11、
以下代码的输出是什么?
(单选题,1.5分)
A.
grammin
B.
programmin
C.
prog
D.
gramming
答案A
12、
以下代码输出的结果分别是____、____。
check_sequence(s)
检查列表是否满足相邻元素差值为1的对于 [5, 6, 7, 8]
,满足条件,返回 True
。对于 [1, 3, 5]
,不满足条件(3 - 1 = 2
),返回 False
。输出为 True False
。
(填空题,10分)
true
false
13、
以下代码的输出是什么?
(单选题,1.5分)
A.
{1}
B.
{1, 2, 3}
C.
{1, 3}
D.
报错
14、
以下代码打印的结果分别是____、____、____和____。
第一个 peek
输出 2
第二个 peek
输出 2
第三个 peek
输出 4
最终 sum(final_stack)
输出 7
(填空题,20分)
2
2
4
7
15、
以下代码运行的结果为____。
merge_dicts(d1, d2)
合并两个字典,处理键冲突的方式是将值相加
合并后字典为{'a': 1, 'b': 5, 'c': 4}
计算 a
、b
和 c
的值之和为 10
因此,代码的输出结果是 10
(填空题,5分)
10
16、
以下代码的输出是什么?
(单选题,1.5分)
A.
2
B.
[1, 2]
C.
0
D.
1
最后一行 print(d.get('a', [0])[0])
:
获取d中键'a'的值,即[1, 2]
取这个列表的第一个元素[0],即1
17、
以下代码输出sums的元素依次是____、____、____、____、____。
cumulative_sum(numbers)
计算输入列表的累积和,并返回每一步的累积和列表。对于输入 [3, 1, 4, 1, 5]
,累积和列表为 [3, 4, 8, 9, 14]
。最终输出为 3 4 8 9 14
(或以列表形式 [3, 4, 8, 9, 14]
)。
(填空题,25分)
3
4
8
9
14
18、
以下代码的输出是什么?
(单选题,1.5分)
A.
False
B.
有时True有时False
C.
True
D.
报错
19、
以下哪种操作的时间复杂度不是O(1)
(单选题,1.5分)
A.
list.append(item)
B.
set.add(item)
C.
list.insert(0,item)
D.
dict[key]
答案c
20、
以下代码的输出是什么?
(单选题,1.5分)
A.
(1, [2, 3, 4])
B.
(1, [2, 3])
C.
(1, [6])
D.
报错
21、
以下不能创建一个字典的语句是?
(单选题,1.5分)
A.
dict1 = {}
B.
dict3 = {(1,2,3):"uestc"}
C.
dict4 = {[1,2,3]:"uestc"}
D.
dict2 = {3:5}
答案c
22、
以下代码的输出是什么?
(单选题,1.5分)
A.
[1, [4, 5, 6], 3]
B.
报错
C.
[1, 4, 5, 6, 3]
D.
[4, 5, 6, 1, 2, 3]
23、
关于迭代器和可迭代对象,描述错误的是?
(单选题,1.5分)
A.
迭代器可以被内建函数next()操作获取下一个数据
B.
可迭代对象可以被内建函数next()操作获取下一个数据
C.
可迭代对象内部肯定会包含一个迭代器对象
D.
迭代器和可迭代对象,都可以被for循环遍历
可迭代对象本身并不直接实现__next__()
方法,不能直接使用next()
函数来获取下一个数据。需要先通过iter()
函数将可迭代对象转换为迭代器,然后再使用next()
函数对迭代器进行操作。例如,对于列表lst = [1, 2, 3]
,直接使用next(lst)
会报错,因为列表是可迭代对象但不是迭代器,应该先使用it = iter(lst)
将其转换为迭代器,再使用next(it)
。所以选项B的说法是错误的。
24、
以下代码的输出是什么?
(单选题,1.5分)
A.
b3
B.
c3
C.
报错
D.
a3
- 先执行列表推导式得到
['a','c']
- 取第一个元素
'a'
- 加上
str(len(d))
即'3'
- 得到
'a3'
因此,输出结果是 "a3"。
25、
以下代码输出的结果是____。
"Hello World, this is a test sentence."
中的元音字母统计:'e'
: 4 次'o'
: 2 次因此,'e' + 'o'
的计数之和为 4 + 2 = 6
。
(填空题,5分)
7
26、
以下代码的输出是什么?
(单选题,1.5分)
A.
3
B.
2
C.
0
D.
1
- result = [0, 1, 2],sum(result) = 0 + 1 + 2 = 3
因此,最终输出结果是3。
27、
以下代码的输出是什么?
(单选题,1.5分)
A.
True
B.
10
C.
False
D.
print(all(x > sum(numbers)/len(numbers) for x in numbers))
:打印all()
函数的返回值,即False
。
选项分析
12.5
28、
以下代码运行的结果是____。
主列表的计数:直接匹配的 2
:1 次(主列表中的 2
)。子列表 [2, 3, [2, 4]]
中的 2
:2 次。子列表 [5, [2]]
中的 2
:1 次。总计数:1 + 2 + 1 = 4。
(填空题,5分)
2
29、
以下代码的输出是什么?
(单选题,1.5分)
A.
3
B.
1
C.
4
D.
2
表达式 s1 & s2
是求s1和s2的交集,结果是 {3}表达式 s2 & s3
是求s2和s3的交集,结果是 {5}|
运算符表示并集操作,所以 {3} | {5}
的结果是 {3, 5}最后 len(result)
计算这个并集的长度,即集合中元素的个数
因此,result = {3, 5}
,它的长度是2。
30、
以下代码输出的结果是____。
(填空题,5分)
hello world
31、
以下哪种方法不能用于从列表[1,2,3,2,1]中删除所有值为2的元素?
(单选题,1.5分)
A.
del lst[lst.index(2)]
B.
[x for x in lst if x != 2]
C.
while 2 in lst: lst.remove(2)
D.
list(filter(lambda x: x != 2, lst))
A选项 lst.index(2)
会返回列表中第一个值为2的元素的索引。del
语句会删除该索引位置的元素。但这个操作只会删除第一个遇到的2,而不会删除所有值为2的元素。例如,初始列表 [1, 2, 3, 2, 1]
:第一次执行:删除索引为1的元素(值为2),列表变为 [1, 3, 2, 1]
。此时列表中仍然有值为2的元素,但 del lst[lst.index(2)]
只会再删除一次第一个遇到的2,不会循环删除所有2。因此,这个方法不能完全删除所有值为2的元素。
32、
下列哪个语句在 Python 中是非法的?
(单选题,1.5分)
A.
x, y = y, x
B.
x += y
C.
x = (y = z + 1)
D.
x = y = z = 1
33、
答案C
以下代码的输出是什么?
(单选题,1.5分)
A.
[[1], [1], [1]]
B.
[[1], [], []]
C.
[[1], [1], []]
D.
[[1, 1, 1], [], []]
print(a)
这行代码打印列表a
的内容。此时,由于之前对a[0]
的修改实际上是对所有元素引用的同一个列表的修改,所以a
的三个元素都会显示为[1]
,即输出结果为[[1], [1], [1]]
34、
以下代码的输出是什么?
(单选题,1.5分)
A.
报错
B.
c
C.
d
D.
3
35、
以下代码输出结果是?
(单选题,1.5分)
A.
None
B.
a
C.
报错
D.
b
a
。根据上述分析,字典a
中键为1
的值是'a'
,所以打印结果为a
,该选项正
36、
关于Python容器的可变性,以下说法正确的是?
(单选题,1.5分)
A.
字符串可以通过索引修改单个字符
B.
字典的值可以是任意类型,但键必须是字符串
C.
元组一旦创建就不能以任何方式修改
D.
集合中的元素必须是不可变类型
答案d
37、
关于Python容器的可变性,以下说法正确的是?
(单选题,1.5分)
A.
set和map都是不可变的
B.
dict的键可以是任意类型
C.
tuple是不可变的,但可以包含可变元素
D.
list和tuple都是可变的
答案C
38、
以下代码的输出是什么?
(单选题,1.5分)
A.
报错
B.
2
C.
0
D.
1
表推导式直接生成的是一维列表,如 ['d', 4] 这样的形式(如果用方括号)但代码中使用了多余的方括号,实际生成的是二维结构:[[x, y] for ...]因此 [...][1][0]
会尝试访问第二个元素的第一个值但过滤后只有一个元素满足条件,所以索引[1]会越界
因此,这段代码会引发 IndexError 错误。
39、
以下代码的输出是什么?
(单选题,1.5分)
A.
16
B.
1
C.
4
D.
9
对于2
,2**2 = 4
。对于4
,4**2 = 16
所以map()
函数返回一个迭代器,其中包含计算后的结果4
和16
list(result)[1]
:获取列表中的第二个元素(索引为1),即16
40、
以下代码输出的结果是____。
第一次插入:reversed_words = ['Python']
第一次插入:reversed_words = ['Python']
第二次插入:reversed_words = ['is', 'Python']
第三次插入:reversed_words = ['fun', 'is', 'Python']
依此类推,最终 reversed_words = ['learn', 'to', 'fun', 'is', 'Python']
(填空题,5分)
learn to fun is Python
41、
以下代码的输出是什么?
(单选题,1.5分)
A.
2
B.
3
C.
1
D.
4
A:1
。四舍五入后数值的个数不是1,所以该选项错误。B:2
。四舍五入后数值的个数不是2,所以该选项错误。C:3
。四舍五入后数值的个数不是3,所以该选项错误。D:4
。列表nums
有4个元素,经过map(round, nums)
处理后,仍然有4个元素(只是值被四舍五入了),所以len(list(map(round, nums)))
的结果是4,虽然代码打印的是求和结果,但根据选项和可能的考察意图,该选项正确(可能是题目代码注释导致理解偏差,但选项4是列表长度
42、
以下代码的输出是什么?
(单选题,1.5分)
A.
报错
B.
4
C.
3
D.
print(t[0] + t[1][0])
:t[0]
仍然是元组创建时的第一个元素1
(因为元组不可变,未被成功修改),t[1][0]
是列表[4, 3]
的第一个元素4
。所以t[0] + t[1][0]
的结果是1 + 4 = 5
5
43、
以下哪种方法不能用于删除字典d中键为'key'的项?
(单选题,1.5分)
A.
del d['key']
B.
d.clear() if 'key' in d
C.
d.remove('key')
D.
d.pop('key')
答案c
44、
以下是字符转换成字节的方法是?
(单选题,1.5分)
A.
decode()
B.
rstrip()
C.
upper()
D.
encode()
答案d
45、
以下代码的输出是什么?
(单选题,1.5分)
A.
3
B.
5
C.
4
D.
6
答案D
len()
函数用于计算序列的长度。- 元组的长度是其包含的元素个数,列表的长度是其元素的个数。
46、
以下代码的输出是什么?
(单选题,1.5分)
A.
PythonJava
B.
JavaC++
C.
C++Java
D.
PythonC++
答案d
max(data, key=len) + min(data, key=len)
:将max(data, key=len)
返回的字符串'Python'
和min(data, key=len)
返回的字符串'C++'
进行拼接,得到'PythonC++'
。
print('PythonC++')
:打印拼接后的字符串'PythonC++'
47、
以下代码的输出是什么?
(单选题,1.5分)
A.
4
B.
3
C.
1
D.
2
d.get('c', len(d))
:get()
方法是字典对象的一个方法,用于获取指定键的值。如果键存在,则返回对应的值;如果键不存在,则返回指定的默认值。这里键'c'
存在于字典d
中,其对应的值为1
,所以d.get('c', len(d))
返回1
。选择C
48、
下面关于模块的说法错误的是( )
(单选题,1.5分)
A.
Python3中sys是系统的内置模块
B.
Python3中math是系统内置提供用于数学运算的模块,其中math.round()方法是四舍五入方法
C.
Python3中我们可以使用“pip install 模块名称”命令在线安装对应的模块
D.
Python3中os模块是内置模块,同时os.path模式也包含在os模块中
,round()
并不是math
模块中的方法,而是Python的内置函数。可以直接使用round(number[, ndigits])
对数字进行四舍五入操作,其中number
是要进行四舍五入的数字,ndigits
是保留的小数位数(可选参数)。所以选项B的说法是错误的。
49、
以下代码的输出是什么?
(单选题,1.5分)
A.
[1, 2, 3, (4,)]
B.
[1, 2, 3]
C.
[1, 2, 3, 4]
D.
报错
50、
关于Python容器的内存管理,以下说法错误的是?
(单选题,1.5分)
A.
列表比元组更节省内存
B.
列表的resize操作可能会导致内存重新分配
C.
集合的元素必须是不可变类型
D.
字典的键必须是可哈希的对象