- 难度级别: 中等
注意:所有这些程序的输出都在 Python3 上进行了测试
1) 以下程序的输出是什么?
D = dict() for x in enumerate(range(2)): D[x[0]] = x[1] D[x[1]+7] = x[0] print(D)
a) KeyError
b) {0:1, 7:0, 1:1, 8:0}
c) {0:0, 7:0, 1:1, 8:1}
d) {1:1, 7: 2, 0: 1, 8
答:(c)
解释: enumerate() 将返回一个元组,循环将有 x = (0, 0), (1, 1)。因此 D[0] = 0, D[1] = 1, D[0 + 7] = D[7] = 0 和 D[1 + 7] = D[8] = 1。
注意:字典是无序的,所以每个输出中键值对的顺序可能不同。
2) 以下程序的输出是什么?
D = {1 : 1, 2 : '2', '1' : 2, '2' : 3} D['1'] = 2 print(D[D[D[str(D[1])]]])
a) 2
b) 3
c) '2'
d) KeyError
答: (b)
解释: 递归使用简单的键值对,D[1] = 1, str(1) = '1'。所以,D[str(D[1])] = D['1'] = 2, D[2] = '2' and D['2'] = 3.
3) 下面程序的输出是什么?
D = {1 : {'A' : {1 : "A"}, 2 : "B"}, 3 :"C", 'B' : "D", "D": 'E'} print(D[D[D[1][2]]], end = " ") print(D[D[1]["A"][2]])
a) DC
b) EB
c) DB
d) E KeyError
答. (d)
说明: 上例中使用了键值索引。D[1] = {'A' : {1 : “A”}, 2 : “B”}, D[1][2] = “B”, D[D[1][2]] = D[ “B”] = “D”和 D[“D”] = “E”。D[1] = {'A' : {1 : “A”}, 2 : “B”}, D[1][“A”] = {1 : “A”} 和 D[1][“A ”][2] 不存在,因此 KeyError.
4) 以下程序的输出是什么?
D = dict() for i in range (3): for j in range(2): D[i] = j print(D)
a) {0:0, 1:0, 2:0}
b) {0:1, 1:1, 2:1}
c) {0:0, 1:0, 2:0, 0:1, 1 : 1, 2: 1}
d) TypeError: Immutable object
答. (b)
解释: 第一个循环将给 i 0、1 和 2 三个值。在空字典中,在 j 循环中添加和覆盖值,例如。由于覆盖,D[0] = [0] 变为 D[0] = 1。
5) 以下哪个选项可能是以下程序的输出?
D = {1 : [1, 2, 3], 2: (4, 6, 8)} D[1].append(4) print(D[1], end = " ") L = [D[2]] L.append(10) D[2] = tuple(L) print(D[2])
a) [1, 2, 3, 4] [4, 6, 8, 10]
b) [1, 2, 3, 4] ((4, 6, 8), 10)
c) '[1, 2, 3, 4] TypeError: tuples are immutable
d) [1, 2, 3, 4] (4, 6, 8, 10)
答. (b)
解释: 在第一部分中使用键值索引并将 4 附加到列表中。由于元组是不可变的,所以在第二部分中,元组被转换为一个列表,最后将值 10 添加到新列表 'L' 中,然后再转换回一个元组。