已知评分,去掉一个最高分,去掉一个最低分,再计算平均分为该选手得分。

参考一下如下代码:

with open('6.txt','r',encoding='utf8') as f:
    data=f.read()
    d={}
    for row in data.strip().split('\n'):
        row=row.strip().split(' ')
        d[row[0]]=[float(x) for x in row[1:]]
tt=[]
for name, score in d.items():    
    score.remove(max(score))
    score.remove(min(score))
    avg = sum(score)/len(score)
    tt.append((name, avg))
tt.sort(key=lambda x: x[1], reverse=True)
for s, v in tt:
    print(f"选手姓名:{s} 最后得分:{v:.2f}")

 

 

tables={'012':{'评分1':90,'评分2':94,'评分3':97,'评分4':86,'评分5':85,'评分6':89,'评分7':88,'评分8':85}, '005':{'评分1':91,'评分2':91,'评分3':92,'评分4':98,'评分5':90,'评分6':96,'评分7':90,'评分8':95}, '108':{'评分1':96,'评分2':86,'评分3':97,'评分4':96,'评分5':87,'评分6':86,'评分7':86,'评分8':96}, '037':{'评分1':95,'评分2':95,'评分3':94,'评分4':93,'评分5':97,'评分6':98,'评分7':99,'评分8':95}, '066':{'评分1':95,'评分2':87,'评分3':94,'评分4':94,'评分5':93,'评分6':99,'评分7':96,'评分8':97}, '020':{'评分1':89,'评分2':97,'评分3':91,'评分4':95,'评分5':89,'评分6':94,'评分7':97,'评分8':92}}
sli = []
for sno,v in tables.items():
    li = list(v.values())
    li.remove(max(li))
    li.remove(min(li))
    avg = sum(li)/len(li)
    sli.append((sno,avg))
sli.sort(key=lambda x: x[1],reverse=True)
for s,v in sli:
    print(f"选手编号:{s} 最后得分:{v:.2f}")

参考下

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632