外观
第9周:第六次上机课(详细讲义)
py 作业 6 逐题讲解
01 · 列表练习
题目要求的操作按顺序作用在同一个列表上。位置从 1 开始,下标从 0 开始;打印时应展示每一步修改后的列表。
| 步骤 | 列表 |
|---|---|
| 原列表 | [4, 0, 5, 6] |
在第 2 个位置插入 8 | [4, 8, 0, 5, 6] |
| 删除第 1 个位置 | [8, 0, 5, 6] |
| 删除第 1~3 个位置 | [6] |
判断 0 是否存在,应针对第三步后的列表。删除前三项可用切片,但要留意切片右端不包含。
课堂追问: 原列表恰好 3 项时,插入后再连续删除,能否出现空列表?何时求最大值?
展开思考
可以。删除后可能为空,但题目随后要求先添加 y,再求最大值;不要在添加之前对空列表求最大值。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
02 · 校门外的树
长度为 L 的马路有 0、1、…、L 共 L+1 个位置。用下标代表位置,初始都标为有树;每读入一个移除区间,把两端及中间位置标为无树。
L=8,区间 [1,3]、[3,5] 合起来移走位置 1 到 5,剩下 0、6、7、8,共 4 棵。重叠部分再次标记仍然只是无树,不会重复扣减。
课堂追问: 为什么 range(1, 3) 不能处理整个 [1,3]?位置 0 和 L 能被移除吗?
展开思考
range 的右端不包含 3,因此要让停止位置再往后一个;位置 0 和 L 也在马路上,只要落在移除区间中就要标记。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
03 · 成绩排序
保存每一行 (姓名, 整数分数),按成绩降序、姓名升序排序。可以用 (-分数, 姓名) 作为排序关键字,元组会先比较第一项,相等时再比较第二项。
Bob 90、Ada 90、Cia 70 排序为 Ada 90、Bob 90、Cia 70。列表里保留每条记录,不因姓名重复而覆盖同名学生。
课堂追问: 若使用 reverse=True 将两个关键字一起反转,同分时姓名的顺序会怎样?
展开思考
姓名也会变成降序,与题目要求不符。可以只把数值分数取负,保持姓名的升序。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
04 · 矩阵换行求边缘和
将输入的行号减 1,交换两个行列表。再遍历交换后的矩阵:只要某个位置在首行、末行、首列或末列,就将它加入一次。
text
交换前 交换第 1、2 行后
1 2 3 4 5 6
4 5 6 1 2 3
7 8 9 7 8 9交换后总和为 45,唯一的内部元素为 2,因此边缘和是 43。也可以逐格检查四个边缘条件,适用于只有一行或一列的情况。
课堂追问: 如果分别加四条边,角上的数字会被计算几次?
展开思考
通常会被算两次。逐格判断“在任一边缘”并只累加一次,可以避免重复;按边分别累加时则要额外排除重复位置。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
05 · 图像模糊处理
读入原图后逐行复制出新图;只计算内部像素,边缘保持原值。中心及上下左右共 5 个位置,所有值都从原图读取,计算结果写到新图。
一个内部像素的新值从哪里来?
原图:中心和上下左右,共 5 个值。
求平均:(100 + 0 + 50 + 200 + 50) ÷ 5 = 80
写入:新图的中心位置写 80;计算其他位置时仍读取原图。
原图和新图的每一行都应独立。new = image 只是增加另一个引用;new = image[:] 只复制最外层列表,里面各行仍然共用。
课堂追问: 五个整数求和后除以 5,会恰好出现小数部分为 0.5 吗?可以使用整除直接代替舍入吗?
展开思考
小数部分只会是 0、0.2、0.4、0.6、0.8,不会恰好为 0.5。round(total / 5) 可用于本题;整除会将 0.6、0.8 向下截断,不符合要求。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
06 · 去除重复数字
先把输入转成整数,再去重并按从小到大排序。输出时把结果用空格隔开;题目要求的是一组数字,不是带逗号和方括号的列表表示。
2 11 2 -1 去重排序后为 -1 2 11。集合用于去重,排序用于决定输出顺序。
课堂追问: 为什么不应先按字符串顺序排列 2 和 11?
展开思考
字符串按字符比较,11 的首字符 1 小于 2,会排在 2 前面。转成整数后才按数值比较。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
07 · 小鹿的工作和休息时间
以开始时间排序,依次合并重叠或首尾相接的区间。后一段起点 a <= 当前右端 时连续,合并后的右端取两段右端较大值;否则保存当前区间并开始新的一段。
把重叠或相接的时间段连起来
已按起点排序;点击“下一步”逐段观察。
[1, 4]
[3, 7]
[7, 9]
[11, 14]
015
0 / 5
所有连续段都得到后,比长度 终点 - 起点;长度相同选开始更早的。工作前若有正长度休息段就输出起床到工作开始;工作后同理。
课堂追问: 处理 [1,8] 后遇到 [2,3],右端应变成 3 吗?如果 [1,4] 和 [6,9] 一样长,选哪段?
展开思考
不能变成 3,因为新的小区间被包含在 [1,8] 内,右端应保持 8。后一个例子两段长度相同,选择更早的 [1,4]。工作覆盖整个清醒区间时不输出零长度休息段。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
08 · 字典练习
前两行每行先按逗号分成多组,再把每组按空格拆成字母键和整数值。将新增键值对存入字典,修改键 a,然后依题意判断键、值与键值对。
如果 D = {'a': 8, 'b': 1, 'c': 0},那么 c 是键、整数 0 是值、b 的值为整数 1,三个判断都为 True。
课堂追问: 为什么 0 in D 与 0 in D.values() 不是同一个问题?
展开思考
前者检查 0 是否是字典的键,后者检查 0 是否是某个键对应的值。字母与数字按题面分别保存为字符串键和整数值。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
09 · 单词出现频率统计
每行读一个单词,直到输入结束;以单词为键,出现次数为值累加。再按次数降序、次数相同时按单词字典序升序排序。
about、send、about、me 的计数是 about: 2、send: 1、me: 1,输出顺序为 2 about、1 me、1 send。第一行本身也是单词,不是单词总数。
课堂追问: 如果所有单词都只出现一次,应按什么顺序输出?
展开思考
计数全部相同,所以由第二个关键字决定:按单词字典序从小到大输出。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
10 · 网站网页访问统计
把 hh:mm:ss 转为从当天零点开始的秒数:h × 3600 + m × 60 + s。每条记录用结束秒数减去开始秒数,再累计到对应网页。
| 网页 | 访问与累计时长 |
|---|---|
| index.html | 6 + 183 = 189 秒 |
| study.html | 185 秒 |
单次最长的是 study,累计最长的是 index。题目不考虑跨午夜;起止相同时这条记录的时长为 0。
课堂追问: 题面没有说明累计时长相同时怎么选网页,课堂解释时该如何处理?
展开思考
明确说明题面没有规定并列规则,不要把自己选择的处理方式当作题目要求。解决样例或明确无并列的数据时,按累计时长选择即可。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…
11 · 单词打分(提高版)
读入人数 n 后有 10n 条评分。按单词分组,保存总分、评分次数和对应的评分人 id;比较每个实际收到评分的单词的平均分,找最低值。
A 的分数是 2、8、8,平均为 6;B 只有一个评分 5,平均为 5,因此 B 更简单。不能只比总分,也不能先把平均分四舍五入再比较。
课堂追问: 前两次的平均为 5,再与第三次 8 直接平均,为什么得到的 6.5 不对?
展开思考
这样把前两次合成的平均值当成一条评分,最后一次的权重变大。应保存总分和次数,计算 (2+8+8)/3=6,同时保留原有 id 输出顺序。
本题答案暂未公开
北京时间 2026/11/09 00:00:00 解锁
1 天 13 小时 16 分 49 秒
正在载入加密答案…