pyhon入门:文本文件中存在学习成绩数据,读取每个学生的成绩数据,计算其平均成绩,然后按照平均成绩倒序排序,再把数据写入文件

使用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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值