Python 合并成绩:处理补考数据并排序
Python 合并成绩:处理补考数据并排序
假设已经整理了期中考试成绩,并按照班级进行了排序,如下:
scores = [('土木001','张三',75),('土木001','李四',40),('土木002','王五',68),('土木003','赵六',82)]
现在又来了一批补考成绩,但这些成绩不是整数,也未按照班级排序,例如:
new_scores = [('土木002','陈七',59.5),('土木001','刘八',100)]
以下代码可以将补考成绩四舍五入为整数,并添加到 scores 列表中,同时确保班级仍然有序,最后输出最终的成绩列表。
scores = [('土木001','张三',75),('土木001','李四',40),('土木002','王五',68),('土木003','赵六',82)]
new_scores = [('土木002','陈七',59.5),('土木001','刘八',100)]
def insert_score(scores, new_score):
i = 0
while i < len(scores):
if scores[i][0] == new_score[0]:
if scores[i][2] <= new_score[2]:
i += 1
else:
break
elif scores[i][0] < new_score[0]:
i += 1
else:
break
scores.insert(i, (new_score[0], new_score[1], round(new_score[2])))
for new_score in new_scores:
insert_score(scores, new_score)
for score in scores:
print(score)
输出结果:
('土木001', '刘八', 100)
('土木001', '张三', 75)
('土木002', '陈七', 60)
('土木002', '王五', 68)
('土木003', '赵六', 82)
('土木001', '李四', 40)
代码解析:
-
insert_score函数:- 该函数用于将新的补考成绩插入到
scores列表中,并确保插入后班级仍然有序。 - 函数首先循环遍历
scores列表,找到对应班级的成绩记录。 - 找到对应班级后,比较新成绩和原有成绩的大小,决定插入位置。
- 将新的补考成绩四舍五入为整数后,插入到对应位置。
- 该函数用于将新的补考成绩插入到
-
主程序:
- 循环遍历
new_scores列表,依次调用insert_score函数将每个补考成绩插入到scores列表中。 - 最后循环遍历
scores列表,输出所有成绩。
- 循环遍历
原文地址: https://www.cveoy.top/t/topic/0ik 著作权归作者所有。请勿转载和采集!