感觉难的是比较总分的同时修改顺序,供参考哦。
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