使用python实现:文本文件a.txt中存在4个同学的学习成绩数据,请读取每个学生的成绩数据,计算其平均成绩,然后按照平均成绩倒序排序,再把数据写入文件a.txt中,写入后的格式为在每个学生成绩数据后面加上averger="平均成绩"和no=名次;
其中,a.txt成绩数据如下:
张三 100 80 90
李四 98 86 99 100 60
王五 100 78 80 86
赵六 87 65 84 89
因为今天突然想写老师布置的作业要DL了一个程序就写了一会很久。
代码如下:
dit={}
sumn=0
with open('a.txt','r',encoding='utf-8') as f:
for line in f:
line = line.replace('\n','')
if (line != ''):
lst = line.split(' ') #把每行变成列表
lst1 = [lst[0]]
lst1 += list(map(int,lst[1:])) #把每行变成列表
dit[lst1[0]] = lst1[1:] #人名为key,成绩为value的字典
lst2 =list(dit) #得到字典key值(人名)(初始顺序)
for i in lst2:
lst3 = dit[i]
for j in range(len(lst3)):
sumn += lst3[j]
avg = sumn/len(lst3) #计算平均值
dit[i] += ['average=',avg]
tup_order = sorted(dit.items(),key=lambda x:x[1][-1],reverse=True) #按平均成绩倒序排序
dit_order = {}
for m in tup_order: #将元组转回字典
dit_order[m[0]] = m[1]
lst_order = list(dit_order) #字典key(排序后)
no = 0 #排名
for r in dit_order:
no += 1
dit_order[r] += ['no=',no]
for n in lst_order: #value全部转为str
lst4 = dit_order[n]
dit_order[n] = list(map(str,lst4[:]))
with open('a.txt','w',encoding='utf-8') as f: #写入文件
for x in lst_order:
f.write(x)
for y in dit_order[x]:
f.write(y)
if y != dit_order[x][-1]:
f.write(' ')
if x != lst_order[-1]:
f.write('\n')
好了好了我知道你看完肯定觉得太low,我知道我菜,大佬们能不能简化下?QAQ