题目:
读取txt文件中的乱序成绩单(依次含有姓名、语文、数学、英语成绩,中间用\t分隔开),按照总成绩进行排序,并加入一列写入排名,输出为文件;再编写一个程序,根据姓名查询成绩和排名。
代码:
# -*- coding: utf-8 -*-
with open('data/test7 成绩排序/成绩单.txt', 'r', encoding = 'UTF-8')as f:
txts = f.read().splitlines()
score = []
for i in txts:
score.append(i.split('\t'))
for i in score:
i.append(str(int(i[1]) + int(i[2]) + int(i[3])))
score.sort(key = lambda x:int(x[4]), reverse = True)
print(len(score))
level = []
mid = 1
for i in range(1, len(score)):
if int(score[i][4]) < int(score[i-1][4]):
mid += 1
level.append(mid)
else:
level.append(mid)
level.insert(0, 1)
print(len(level))
for i in range(len(score)):
score[i].append(str(level[i]))
for i in score:
for j in range(6):
print(i[j],end="\t")
print()
with open('data/排名情况.txt', 'w', encoding="UTF-8") as f:
for i in score:
for j in i:
f.write(j+"\t")
f.write("\n")
Note:
* score函数的使用与lambda的结合
* 文本内容的读写