第8课 列表进阶——排序、查找与二维列表课后练习--小学信息科技Python程序设计

资源下载
  1. 二一教育资源

第8课 列表进阶——排序、查找与二维列表课后练习--小学信息科技Python程序设计

资源简介

/ 让教学更有效 精品试卷 | 信息
第8课 课后练习
(学生用)
班级:____________ 姓名:____________ 得分:__________
一、填空(每空 3 分,共 24 分)
1.a = [3, 1, 4, 2],执行 a.sort() 后 a 的值是 ______________。
2.对 a 使用 sorted(a, reverse=True) 会得到从 ______ 到 ______ 排列的新列表,原列表 a ______(会 / 不会)改变。
3.冒泡排序中,外层循环控制 ______________,内层循环负责 ______________。
4.交换 a[j] 与 a[j + 1] 的 Python 写法是:______________。
5.b = [[1, 2], [3, 4]],则 b[1][0] 的值是 ______。
6.顺序查找时,常用 pos = ______ 表示「还没有找到」。
二、判断对错(每题 3 分,共 12 分)
1.a.sort() 会返回一个排好序的新列表,可以用 b = a.sort() 接住。(  )
2.冒泡排序的内层循环范围写成 n-1-i,是因为后面 i 个元素已经排好了。(  )
3.数组 a = [5, 3, 8],执行一轮冒泡后变为 [3, 5, 8]。(  )
4.二维列表 a[i][j] 中,i 表示行、j 表示列。(  )
三、手算模拟题(14 分)
对 a = [4, 2, 7, 1] 使用冒泡排序,请写出每一轮结束后的列表。
轮次 本轮比较过程 本轮结束后 a
第 1 轮
第 2 轮
第 3 轮
结论:排序后 a = ____________________,一共比较了 ______ 次。
四、★ 补全代码(每空 5 分,共 20 分)
第 1 题 把列表从大到小排序并输出。
a = [88, 92, 75, 60, 95]
a.sort(reverse=①______) # 填 True 或 False
print(a)
第 2 题 用冒泡排序把列表从小到大排序。
a = [5, 3, 8, 1, 9]
n = len(a)
for i in range(n - 1):
for j in range(②________):
if a[j] > a[j + 1]:
a[j], a[j + 1] = ③____________________
第 3 题 顺序查找。
a = [88, 92, 75, 60]
target = int(input())
pos = -1
for i in range(len(a)):
if a[i] == target:
pos = i
break
if pos == ④______:
print("没有找到")
else:
print("第", pos + 1, "个")
① ______ ② ______ ③ ______ ④ ______
五、★★ 提高题(每题 10 分,共 30 分)
第 1 题 一题两解(对比 sort 与冒泡)
输入 5 个整数,用两种方法分别得到从小到大排序的结果:① 直接调用列表的排序方法;② 自己写冒泡排序。在下面写出两段代码,并说明各自的优缺点。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
优缺点:① __________________________________________________________
______________________________________________________________
______________________________________________________________
     ② __________________________________________________________
______________________________________________________________
______________________________________________________________
第 2 题 读程序写结果
a = [9, 4, 6, 2]
for i in range(len(a) - 1):
for j in range(len(a) - 1 - i):
if a[j] < a[j + 1]: # 注意这里是小于号!
a[j], a[j + 1] = a[j + 1], a[j]
print(a)
输出结果:____________________。想一想:把大于号改成小于号,排序结果有什么变化?
______________________________________________________________
______________________________________________________________
第 3 题 边界测试
下面这段找最大值的代码,对下面哪组数据会出错?为什么?怎么改?
a = [7, 3, 5]
m = 0
for x in a:
if x > m:
m = x
print(m)
测试数据:① [7, 3, 5] ② [-7, -3, -5] ③ [0, 0, 0]
会出错的是第 ______ 组。原因:____________________________________
______________________________________________________________
______________________________________________________________
改正方法:__________________________________________________________
______________________________________________________________
______________________________________________________________
六、★★★ 挑战题(每题 12 分,共 24 分)
第 1 题 学生成绩排名
录入 n 个学生的姓名与语文、数学两科成绩(用二维列表保存),要求:
① 输出每个学生的姓名和总分;② 按总分从高到低排出名次并输出。
提示:可以先用二维列表 a[i] = [姓名, 语文, 数学],再想办法按 a[i][1] + a[i][2] 排序。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
第 2 题 有序列表的查找优化
已知列表已经从小到大排好序,请思考:有没有比「一个一个比」更快的查找办法?如果用「先看中间那个数」的办法,最多需要比较几次就能确定目标在不在?以 1~100 的 100 个数为例说明你的思路。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
教师评语:
__________________________________________________________________
__________________________________________________________________
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)

展开更多......

收起↑

资源预览