求大佬解答Python文件数据问题

 

感觉难的是比较总分的同时修改顺序,供参考哦。

import codecs

# 读取学生成绩信息,
def read_data(file):
    id_list = [] # 存放学号
    dict_stu = {} # 存放学号对应的成绩信息
    with codecs.open(file, 'r', encoding='utf-8') as f:
        n = 0
        for line in f:
            if n == 0:
                n += 1
                continue
            else:
                new_data = []
                data = line.split(",")
                # print(data)
                for i in data:
                    new_data.append(i.replace("\r", "").replace("\n", ""))
                id = data[0]
                score = int(new_data[2]) + int(new_data[3]) + int(new_data[4])
                new_data.append(str(score))
                dict_stu[id] = new_data
                id_list.append(id)

        # 冒泡排序,比较学号对应的总分大小
        for x in range(len(id_list) - 1):
            for y in range(len(id_list) - 1 - x):
                if dict_stu[id_list[y]][5] < dict_stu[id_list[y + 1]][5]:
                    tmp = id_list[y]
                    id_list[y] = id_list[y +1]
                    id_list[y + 1] = tmp

        # 打印名次
        print("名词 学号 姓名 语文 数学 外语 总分")
        orderNo = 1
        for x in id_list:
            line = str(orderNo) + " " + " ".join(dict_stu[x])
            print(line)
            orderNo += 1



if __name__ == "__main__":
    read_file = "./1.txt"
    try:
        read_data(read_file)
    except:
        pass