综合练习4 完整参考答案与解析
一、单选题(共20题,每题2分,共40分)
1. 答案:C
解析:列表s =[1,"kate",True]只有3个元素,合法索引为0、1、2,访问s[3]会触发索引越界错误,描述错误。
2. 答案:B
解析:break会直接终止整个循环;continue仅结束本次循环,继续下一轮循环判断。两个关键字在for和while循环中都可以使用。
3. 答案:D
解析:print()函数默认以换行结尾,循环遍历列表时每个元素单独占一行输出。
4. 答案:B
解析:字符串索引从0开始,name[2]对应字符t,-2对应倒数第二个字符,切片左闭右开,最终截取结果为"thon语言程序"。
5. 答案:C
解析:列表支持索引随机访问,可以不按顺序查找元素;列表元素类型可以不同,支持in运算符,插入位置灵活。
6. 答案:C
解析:列表推导式遍历字符串'Python'的每个字符,字符与整数相乘表示字符串重复两次,最终得到每个字符双写的列表。
7. 答案:D
解析:使用random库的函数必须先通过import random导入库,导入语句不能省略;while True创建死循环,randint(1,10)生成[1,10]闭区间的整数。
8. 答案:D
解析:join()方法用指定字符串连接列表元素,仅在元素之间添加分隔符,首尾不会额外添加,输出结果为alex_eric_rain。
9. 答案:C
解析:遍历字符串时,遇到字符'W'就执行break跳出循环,因此只输出'W'之前的字符Hello。
10. 答案:C
解析:range(10)生成0~9的整数,偶数时执行continue跳过输出,仅输出奇数,结果为1,3,5,7,9,。
11. 答案:D
解析:range(12)生成0~11的整数,其中能被4整除的数为0、4、8。
12. 答案:B
解析:遍历列表0~4,每个元素后用逗号结尾输出,end=",",最终结果为0,1,2,3,4,。
13. 答案:C
解析:continue只结束当前本次循环,不会跳出循环体,会继续判断下一次循环条件;break才是结束整个循环。
14. 答案:A
解析:ls[-1]获取最后一个子列表[7,8,9],再通过[-1]获取子列表的最后一个元素9。
15. 答案:B
解析:列表sort()方法中,reverse=True表示降序排列,Python的布尔值首字母必须大写。
16. 答案:C
解析:print(name[0], name[8], name[-1])会输出三个值,分别是“全”“试”和最后一个字符n,并非只有“全 试”,描述错误。
17. 答案:A
解析:len()计算列表第一层的元素个数,ls第一层有3个子列表元素,长度为3。
18. 答案:B
解析:range(15)生成0~14的整数,其中能被5整除的数为0、5、10。
19. 答案:C
解析:求列表最大值使用Python内置函数max(listV);列表没有.max()方法,reverse()是反转列表,pop()是弹出列表元素。
20. 答案:D
解析:sorted()默认升序排列,reverse=True表示降序,列表从大到小排序结果为[5,4,3,1]。
二、填空题(共3题,每题3分,共9分)
21. 答案:6
解析:while循环共执行4次,i从0递增到3,x依次累加0、1、2、3,最终x=0+1+2+3=6。
22. 答案:20
解析:print语句在for循环的外部,continue仅跳过本次循环内的后续代码,循环会完整执行到结束,最终变量i保留最后一次迭代的值20,程序只输出一次20加空格。
23. 答案:12
解析:字典是可变数据类型,d2 = d1是引用赋值,二者指向同一个字典对象。修改d1['a']的值为6后,d2['a']也同步变为6,求和结果为6+6=12。
三、判断题(共6题,每题1分,共6分)
24. 答案:错(B)
解析:函数可以设置默认参数、可变参数,实参个数不一定与形参个数完全相等。
25. 答案:错(B)
解析:reversed()返回反转迭代器,不会修改原列表,执行代码后ls的值仍为[1,7,5]。
26. 答案:对(A)
解析:整数是不可变数据类型,函数内修改形参不会影响函数外部的实参,调用后外部a、b的值保持1、2不变。
27. 答案:对(A)
解析:函数的核心作用是封装代码逻辑,实现代码复用,降低编程复杂度。
28. 答案:错(B)
解析:用import导入库后,调用库函数必须使用<库名>.<函数名>()的格式,不能直接写函数名。
29. 答案:错(B)
解析:return语句后可以不跟值,仅用于提前结束函数,此时函数默认返回None。
四、简答题(共3题,每题15分,共45分)
30. 找出100内的所有完数
实现代码:
for num in range(2, 101):
factors = []
# 遍历找出所有真因子
for i in range(1, num):
if num % i == 0:
factors.append(str(i))
# 判断是否为完数并按格式输出
if num == sum(map(int, factors)):
print(f"{num}={'+'.join(factors)}")
运行输出:
6=1+2+3
28=1+2+4+7+14
31. 计算1²-2²+3²-4²+…+99²
实现代码:
total = 0
for i in range(1, 100):
if i % 2 == 1:
total += i ** 2
else:
total -= i ** 2
print(total)
运行结果:4950
32. 生成10个100~200的不重复随机数,求最值与平均值
实现代码:
import random
# 生成10个100~200之间不重复的随机整数
num_list = random.sample(range(100, 201), 10)
max_val = max(num_list)
min_val = min(num_list)
avg_val = sum(num_list) / len(num_list)
print("生成的随机数:", num_list)
print("最大值:", max_val)
print("最小值:", min_val)
print("平均值:", avg_val)