Skip to content

2026-计算概论C-py作业6 ​

题集链接 ​

OpenJudge/计算概论C(py)/2026-计算概论C-py作业6

共 11 题。题面、知识点、解题提示和易错点可直接查看。截止时间为北京时间 2026-11-09 00:00(即 11 月 8 日周日结束时)。

完整参考解析于截止后公开,教师可使用统一密码提前查看。请在本作业题集提交;汇总练习题集中的提交不计作业成绩。

第 8 周课堂版 · 第 8 周详细讲义 · py6 配套练习

01:列表练习 ​

查看 OpenJudge 原题

题目描述 ​

练习列表的相关操作。首先读入一个列表 L,再读入两个数 x, y。对列表 L 执行下列操作。

  1. 在 L 的第2个位置增加元素 x,并打印列表
  2. 删除 L 的第1个位置的元素,并打印列表
  3. 删除 L 的第1-3位置的元素,并打印列表
  4. 判断 L 是否包含元素 0,输出 "False" 或者 "True"
  5. 向 L 的末尾增加元素 y,并打印列表
  6. 输出 L 的长度
  7. 输出 L 中最大的元素

输入

两行
第一行作为列表的元素(列表长度大于等于3),每个元素都是一个整数,用空格隔开。
第二行是两个整数,用空格隔开

输出

执行描述中的所有操作

样例输入

1 2 3 4 5 6 7
0 -1

样例输出

[1, 0, 2, 3, 4, 5, 6, 7]
[0, 2, 3, 4, 5, 6, 7]
[4, 5, 6, 7]
False
[4, 5, 6, 7, -1]
5
7

解题提示

本题知识点: 列表读写、插入、删除与成员判断。

  1. 先把第一行转换为整数列表,再读取 x、y。按题目的先后顺序修改同一个列表;每一步打印的是当前列表,不是最初的列表。

  2. 题目用从 1 开始的位置描述,Python 下标从 0 开始:在第 2 个位置插入应考虑下标 1;删除第 1 至第 3 个位置时,切片右端不包含在内。

  3. 判断 0 是否在当前列表中,再把 y 加到末尾;最后对添加后的列表求长度和最大值。

易错点

  • 几次操作会连续改变列表;不能每步都对初始列表操作。
  • 前几步要求打印列表本身,例如 [1, 2],不是只打印元素;布尔值按题面输出 True 或 False。
  • 原列表只有 3 项时,删除后可能暂时为空;添加 y 后再取最大值。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

02:校门外的树 ​

查看 OpenJudge 原题

题目描述 ​

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
马路上有一些区域要用来建地铁,这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入

输入的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

输出

输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。

样例输入

500 3
150 300
100 200
470 471

样例输出

298

来源

noip2005普及组

解题提示

本题知识点: 列表标记、闭区间、循环。

  1. 0 到 L 的每个整数位置各有一棵树,共 L+1 个位置,可以用列表记录每个位置是否还有树。

  2. 逐个读入区域,把该区域的起点到终点都标为已移走;如果两个区域重叠,重复标记仍然只代表同一棵树被移走。

  3. 最后统计仍有树的位置数量。

易错点

  • 两端坐标都包含在内;若使用 range 或切片,注意右端默认不包含。
  • 不能直接用区域长度之和相减,因为重叠位置会被重复计算。
  • 0 和 L 位置的树也可能被移走。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

03:成绩排序 ​

查看 OpenJudge 原题

题目描述 ​

给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

输入

第一行为n (0 < n < 20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。

输出

把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。

样例输入

4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28

样例输出

Joey 92
Hanmeimei 90
Kitty 80
Tim 28

来源

习题(14-1)

解题提示

本题知识点: 列表、元组、多关键字排序。

  1. 逐行保存姓名和整数成绩,一条输入对应一条记录。

  2. 先比较成绩:分数高的排前面;只有分数相同才比较姓名,按字典序小的在前。可以为排序提供包含两个关键字的元组。

  3. 排序完成后逐行输出姓名与成绩。

易错点

  • 分数应按整数比较,而不是按字符串比较;不要把两个排序条件都设为降序。
  • 题面没有保证姓名唯一,按姓名做唯一字典键可能覆盖另一条同名记录。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

04:矩阵换行求边缘和 ​

查看 OpenJudge 原题

题目描述 ​

输入一个整数矩阵,交换其中的两行,然后计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

输入

第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。
接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。
在接下来是两个整数x,y,表示需要将矩阵的第x行和第y行交换一下。

输出

输出交换行之后的矩阵的边缘元素和

样例输入

3 3
3 4 1
3 7 1
2 0 1
1 2

样例输出

18

来源

Guo wei

解题提示

本题知识点: 二维列表、行交换与边缘判断。

  1. 读入矩阵,把题目从 1 开始的行号转换为列表下标,再交换两个行列表。

  2. 逐格检查交换后的矩阵:如果在第一行、最后一行、第一列或最后一列,就将该元素累加一次。

  3. 也可以先按行累加,但要单独考虑只有一行或一列的情况。

查看第 8 周详细讲义。

易错点

  • 先交换再求和;四个角同时满足行和列条件,但每个位置只计算一次。
  • 检查一行、一列、单个元素及交换同一行,避免首尾重合时重复计数。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

05:图像模糊处理 ​

查看 OpenJudge 原题

题目描述 ​

给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

  1. 四周最外侧的像素点灰度值不变;

  2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

输入

第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。

输出

n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。

样例输入

4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100

样例输出

100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100

解题提示

本题知识点: 二维列表、独立副本、邻域和舍入。

  1. 先读入原图,并逐行复制出结果图。四周边缘保持原值,只遍历存在上下左右邻居的内部位置。

  2. 每个内部位置从原图取中心及上下左右 5 个原值,求平均并舍入到最接近的整数,再写入结果图。

  3. 逐行输出结果;没有内部位置时应原样输出。

查看第 8 周详细讲义。

易错点

  • 不能边读原矩阵边原地覆盖,否则后续像素可能读到已经更新的邻居。
  • 外层浅复制不会复制每一行;每一行也需要复制。
  • 5 个整数的和除以 5 不会恰好出现小数部分 0.5;本题可以使用 round,但不能用整除代替舍入。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

06:去除重复数字 ​

查看 OpenJudge 原题

题目描述 ​

输入一组随机整数,去除重复的数字,并有序打印出来。

输入

一组随机整数,以空格分隔

输出

从小到大排序的去重数组

样例输入 1

2 5 11 17 1 15 15 9 5 17 16 17 14 3 9 6 13 4 16 16 17 4

样例输出 1

1 2 3 4 5 6 9 11 13 14 15 16 17

样例输入 2

9 5 14 8 1 19 4 1 1 12 7 4 10 4 16 11 6 1 0 18 11 10 2 9 9 4 10 11 0 5 10 17 18 19 7 15 14 12 6

样例输出 2

0 1 2 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19

解题提示

本题知识点: 集合去重、整数排序。

  1. 将一行输入转换成整数;使用集合去除重复值,再按数值从小到大排序。

  2. 把排序结果中的整数以空格分隔输出。

易错点

  • 先转换为整数再排序,否则字符串 11 会排在 2 前面。
  • 输出需要符合题面的空格分隔格式,不要直接打印带括号和逗号的 Python 列表。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

07:小鹿的工作和休息时间 ​

查看 OpenJudge 原题

题目描述 ​

作为侦探,小鹿一刻不停地利用传送点在提瓦特大陆的各处奔波。每天他都会收到许多委托信件,他需要与委托人们见面以倾听事件的情况。委托人们的空闲时间各不相同并且有长有短,小鹿会排满自己的工作时间接受他们的委托并与其约见,在尽可能多见委托人的基础上,会和每个委托人尽可能充分交谈。

由于小鹿不喜欢工作与休息状态的切换,因此他希望连续工作尽可能长的一整段时间,然后就开始休息。如果有多段可选的工作时间长度相同,就选最早的一段。他想计算在这个前提下,他的工作时间段和休息时间段分别如何分布。

输入

第一行为小鹿今天的起床时间和入睡时间l,r。
第二行为委托数目n。
第三行起共n行,每行为某个委托人的空闲时间li,ri。

输出

第一行为小鹿今天的工作时间段,即开始工作的时间和结束工作的时间,用空格隔开。
第二行(及可能有的第三行)为小鹿今天的休息时间段,按时间顺序输出。

样例输入 1

1 15
5
1 5
9 10
5 6
6 9
8 10

样例输出 1

1 10
10 15

样例输入 2

1 15
4
1 4
9 10
6 9
8 10

样例输出 2

6 10
1 6
10 15

来源

Ljl

解题提示

本题知识点: 区间排序与合并、长度比较。

  1. 先按开始时间排序。连续或重叠的委托时间可以形成一段连续工作区间;后一区间的起点不晚于当前区间终点时,延长当前终点。

  2. 遇到真正的间隔时,记录已经合并的一段,另开新段;扫描完最后一条后别忘记处理最后一段。

  3. 比较每个合并段的长度,长度相同选开始更早的一段;再根据当天起止时间输出工作段前后的休息段。

查看第 8 周详细讲义。

易错点

  • 端点相接的区间也连续;区间包含另一区间时,合并后的右端不能缩短。
  • 先合并后比较长度,不能只挑最长的单个委托;相同长度不要覆盖更早的段。
  • 工作覆盖起床到入睡的全部时间时,不要额外输出零长度的休息段。题面未说明没有有效委托时的输出约定。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

08:字典练习 ​

查看 OpenJudge 原题

题目描述 ​

练习字典的相关操作。首先读入一些作为键值对的元素存入一个字典 D;再读入一些作为键值对的元素,如 x1 y1, x2 y2;最后读入一个值 y3。对字典 D 执行下列操作。

  1. 新增输入的键值对元素,如 x1:y1, x2:y2,程序无需考虑键值重复的问题
  2. 修改键 "a" 的值为 y3
  3. 判断字符 "c" 是否是 D 的键,输出 "False" 或者 "True"
  4. 判断整数 0 是否是 D 的值,输出 "False" 或者 "True"
  5. 判断键值对 "b":1 是否在 D 中,输出 "False" 或者 "True"

输入

三行
第一行和第二行都是由多个键值对构成;每个键值对包括字母、数字,二者之间用空格分隔;各键值对用逗号隔开
第三行是一个整数

输出

执行描述中的所有操作

样例输入

a 1,b 2,c 3
d 4,e 5
8

样例输出

True
False
False

解题提示

本题知识点: 字典输入、更新、键与值的成员判断。

  1. 前两行先按逗号拆分出多个键值对,再将每组拆成键和整数值,依次放进字典。

  2. 把键 a 对应的值改为第三行给出的整数,然后分别判断 c 是否为键、0 是否为值,以及 b 对应的值是否为 1。

  3. 按要求依次输出三项布尔判断结果。

易错点

  • 键与值不是同一类成员:c in D 检查键,检查值时需要看字典的值。
  • 输入的数字需要转换成整数;字符串 "1" 与整数 1 不相等。
  • 判断 b:1 时,既要考虑是否有键 b,也要检查它对应的值。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

09:单词出现频率统计 ​

查看 OpenJudge 原题

题目描述 ​

统计单词出现次数并排序输出

输入

最多60,000个单词,每个一行。单词由小写字母构成,不超过30个字符。

输出

按单词出现次数从高到低输出所有单词。次数相同的,按照词典序从小到大排。

样例输入

about
send
about
me

样例输出

2 about
1 me
1 send

来源

Guo Wei

解题提示

本题知识点: EOF 输入、字典计数、多关键字排序。

  1. 逐行读取单词直到输入结束,每读到一个词,就把该词对应的计数加一。

  2. 统计结束后按次数降序排列;次数相同时,按单词字典序升序排列。

  3. 每行输出次数和单词。

查看第 8 周详细讲义。

易错点

  • 题目没有给出单词个数,第一行也是单词,不能把它当成数量。
  • 排序优先级是次数在前、单词在后;不要将两个条件统一倒序。
  • 输入最多 60000 个单词,应先计数再排序,避免对每个单词反复扫描所有输入。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

10:网站网页访问统计 ​

查看 OpenJudge 原题

题目描述 ​

某网站上中有某一天内用户访问的网页的记录,程序要统计出访问时长最多的网页。

输入的数据是这样的格式:网页 起始时间 结束时间,数据之间用空格分开。

index.html 10:25:00  10:25:06

study.html 10:25:45  10:26:01

index.html 10:26:00  10:29:03

teachers.html 10:59:01  11:01:03

每个网页的访问时间等于结束时间减起始时间(时间可化为秒数,方便计算)。这里不考虑跨24:00的情况(也就是说,给定的数据中,结束时间总是大于等于起始时间)。将时分秒化成秒数的功能,要求写一个函数。

注意有的网页(如示例中的index.html)是多次访问,时间要进行相加。

输入

第一行是一个正整数,表示后面有多少条记录。
后面的是多行记录,每行记录包括:网页 开始时间 结束时间。三项数据用空格分开。

输出

访问时长最长的网页

样例输入

4
index.html 10:25:00 10:25:06
study.html 10:25:45 10:28:50
index.html 10:26:00 10:29:03
teachers.html 10:59:01 11:01:03

样例输出

index.html

来源

tds

解题提示

本题知识点: 时间转换函数、字典累加、最大值。

  1. 写一个函数,将 时:分:秒 拆成三个整数并换算为从当天零点开始的秒数。

  2. 每条记录的时长是结束秒数减开始秒数;以网页名为键,把相同网页的多次时长累加。

  3. 全部记录处理完再找累计时长最大的网页。样例中 index 的两次访问要相加,不能只比较单次最长。

查看第 8 周详细讲义。

易错点

  • 不要用字符串直接做时间差,也不要用最新的一次访问覆盖之前的累计时间。
  • 题面说明不跨午夜,起止相同时的访问时长是 0。
  • 题面没有规定累计时长并列时的处理规则,不要把自行选择的并列规则说成题目要求。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

11:单词打分(提高版) ​

查看 OpenJudge 原题

题目描述 ​

大家一起在学习单词时,会对学习的单词评分,评分越高,单词越难。现在每个人都对10个单词评分,不同的人可能对同一个单词评分,求最简单的单词。最简单的单词必须被评过分;如果单词被多人评分,它的综合评分是这些评分的平均数;不会出现多个最简单单词。

输入

人数n,n∈[3,10]
后续共n*10行,分别表示每一个人对10个单词的打分。
每一行第一个数字代表人的id,第二个为打分单词,第三个为对应分数(分数为1-10之间的整数)。

输出

最简单的单词
给最简单单词打过分的id,以空格分隔

样例输入

6
0 ladder 9
0 fluids 6
0 data 8
0 objectives 2
0 counts 1
0 jump 1
0 guidelines 2
0 travel 7
0 categories 9
0 resistances 7
1 dispatchers 6
1 counts 7
1 blackboard 6
1 resistances 5
1 ladder 4
1 restrictions 5
1 grounds 2
1 jump 2
1 data 3
1 objectives 7
2 counts 10
2 steps 1
2 restrictions 9
2 jump 4
2 gate 1
2 security 10
2 accounting 6
2 dispatchers 4
2 professionalism 6
2 ladder 8
3 blackboard 1
3 accounting 8
3 objectives 5
3 ladder 8
3 steps 2
3 dispatchers 5
3 data 10
3 fluids 7
3 resistances 3
3 jump 4
4 guidelines 7
4 security 4
4 professionalism 7
4 travel 6
4 dispatchers 7
4 blackboard 7
4 grounds 5
4 data 9
4 ladder 10
4 sail 7
5 professionalism 8
5 objectives 1
5 blackboard 7
5 grounds 9
5 categories 5
5 travel 10
5 dispatchers 1
5 accounting 6
5 restrictions 8
5 gate 1

样例输出

gate
2 5

解题提示

本题知识点: 字典分组、累计与平均数。

  1. 人数为 n 时共有 10n 条评分记录。按单词分组,记录总分、评分次数以及按输入顺序出现的评分人 id。

  2. 对实际收到评分的单词,比较总分除以评分次数得到的平均分;选择平均分最低的单词。

  3. 第一行输出选中的词,第二行输出给该词评分的 id。

查看第 8 周详细讲义。

易错点

  • 最低总分不一定是最低平均分;不要在比较前将平均分四舍五入。
  • 不要用 (旧平均 + 新分数) / 2 更新平均分,那会改变各评分的权重。
  • 题面保证最简单的单词唯一,没有要求 id 重新排序,可以保留输入记录顺序。

本题答案暂未公开

北京时间 2026/11/09 00:00:00 解锁

1 天 13 小时 16 分 49 秒

正在载入加密答案…

课程资料由授课教师、助教与同学共同积累。