- 难度级别: 困难
注意:所有这些程序的输出都在 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。