• 难度级别: 困难

注意:所有这些程序的输出都在 Python3 上进行了测试

预测以下 Python 程序的输出。

1) 以下哪个选项可能是以下程序的输出?

L = list('123456')
L[0] = L[5] = 0
L[3] = L[-2]
print(L)

a) [0, '2', '3', '4', '5', 0] 

b) ['6', '2', '3', '5', '5', '6'] 

c) ['0', '2', '3', '5', '5', '0'] 

d) [0, '2', '3', '5', '5', 0] 

答:(d)  

说明:  L[0] 为'1',L[5] 为'6',这两个元素在List 中都将被替换为0。L[3],即 4 将被替换为 L[-2],即 5。

2) 以下程序的输出是什么?

T = 'cheng'
a, b, c, d, e = T
b = c = '*'
T = (a, b, c, d, e)
print(T)

a) ('c', '', '', 'n', 'g') 

b) ('c', 'h', 'e', 'n', 'g') 

c) (' cheng', '', '') 

d) KeyError 

答:(a)  

解释: 创建一个元组为T = ('c', 'h', 'e', 'n', 'g'),然后解包成a,b,c,d,e,映射从'c'到a和'g'到e。b 和 c 都等于 '*' 然后将现有的元组替换为将 a、b、c、d 和 e 打包成一个元组 T。

3) L 在末尾的值是多少执行以下程序?

L = [2e-04, 'a', False, 87]
T = (6.22, 'boy', True, 554)
for i in range(len(L)):
if L[i]:
L[i] = L[i] + T[i]
else:
T[i] = L[i] + T[i]
break

a) [6.222e-04, 'aboy', True, 641] 

b) [6.2202, 'aboy', 1, 641] 

c) TypeError 

d) [6.2202, 'aboy', False, 87] 

答:(c)  

解释:  for 循环将运行 i = 0 到 i = 3,即 4 次(len(L) = 4)。2e-04 与 0.0002 相同,因此 L[i] = 6.22 + 0.0002 = 6.2202。字符串加法将导致连接,'a' + 'boy' = 'aboy'。False + True 为 True,它将返回整数值 1。由于元组是不可变的,代码将以 TypeError 结尾,但 L 的元素将被更新。

4) 以下程序的输出是什么?

T = (2e-04, True, False, 8, 1.001, True)
val = 0
for x in T:
val += int(x)
print(val)

a) 12 

b) 11 

c) 11.001199999999999 

d) TypeError 

答:(b)  

解释:  2e-04(0.0002)的整数值为0,True为1,False为0,1.001的整数值为1。因此总计0 + 1 + 0 + 8 + 1 + 1 = 11。

5) 以下哪个选项可能是以下程序的输出?

L = [3, 1, 2, 4]
T = ('A', 'b', 'c', 'd')
L.sort()
counter = 0
for x in T:
L[counter] += int(x)
counter += 1
break
print(L)

a) [66, 97, 99, 101] 

b) [66, 68, 70, 72] 

c) [66, 67, 68, 69] 

d) ValueError 

答:(d)  

解释: 在 sort(L) 之后,L 将 = [1, 2, 3, 4]。Counter = 0, L[0] 即 1, x = 'A',但是 char 'A' 到整数的类型转换会抛出错误,并且值不能存储在 L[0] 中,因此会出现 ValueError。