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)

代码解析:

  1. insert_score 函数:

    • 该函数用于将新的补考成绩插入到 scores 列表中,并确保插入后班级仍然有序。
    • 函数首先循环遍历 scores 列表,找到对应班级的成绩记录。
    • 找到对应班级后,比较新成绩和原有成绩的大小,决定插入位置。
    • 将新的补考成绩四舍五入为整数后,插入到对应位置。
  2. 主程序:

    • 循环遍历 new_scores 列表,依次调用 insert_score 函数将每个补考成绩插入到 scores 列表中。
    • 最后循环遍历 scores 列表,输出所有成绩。
Python 合并成绩:处理补考数据并排序

原文地址: https://www.cveoy.top/t/topic/0ik 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录