python文件处理10名选手成绩的排名

直接上代码,解释在注释,不懂评论留言,必回

# 作者:key
# 开发时间:2020-10-18 15:45:10
# 开发环境:Pycharm
'''
3. 从文件中取出12个裁判员为10个运动员大的分数,
每个运动员评分中去掉一个最高分和一个最低分,计算平均成绩,然后给出运动员排名;
'''
'''
ls.sort(key = lambda x:x[1], reverse=True)用法

按照列表维度(指数组中第0,1,2个元素)进行排序,
默认为从小到大,'reverse=True'则意味着从大到小。

关于维度,形象地理解如下:

ls = [('k','ting',5), ('e', 'bao', 2), ('y', 'bei', 0)]中
x:x[0]相当于按'k', 'e', 'y'进行排序,其中x可以换成其他变量。
x:x[1]相当于按照 'ting', 'bao', 'bei'进行排序。

'''
fpath = "C:/Users/Lenovo/Desktop/dafen.txt"

with open(fpath,'r') as f:
    player  = [[]for i in range(10)] 
    countlines=0  #行数#这里的行数也代表了运动员的编号 
    for contents in f:      
       contents = contents.strip()     #返回的是一个str类  
       contents = contents.split(' ')  #返回一个list 按照空格分割
       scorenum = len(contents)  #这里的list大小,也就代表了一共有多少个分数
       for i in range(scorenum):
           contents[i]=float(contents[i])
       maxscore = max(contents)
       minscore = min(contents)
       #round(tmp,int)将tmp保留为int位的小数位
       temp = round((sum(contents)-maxscore-minscore)/(scorenum-2) ,2)
       player[countlines].append("第{}号的选手成绩是".format(countlines+1))
       player[countlines].append(temp)
       countlines+=1
    #排序
    player.sort(key = lambda x:x[1],reverse = True)
    #print(player)  输出
    for i in range(10):
        print("第{}名的选手是 ".format(i+1),player[i])

测试数据

本地保存为txt文件
8.9 9.3 7.9 9.0 8.8 6.5 8.4 6.6 8.2 9.1 9.2 8.8
9.0 7.8 8.7 8.9 9.0 7.6 8.1 6.5 9.6 7.7 6.9 7.5
5.8 7.4 5.3 7.3 9.1 7.9 6.7 6.8 7.8 8.0 7.6 8.1
9.0 7.9 8.3 9.2 7.8 9.2 6.4 6.9 5.8 7.7 8.2 9.0
9.0 8.6 6.9 7.5 5.8 8.6 7.4 6.8 8.4 7.8 9.2 6.7
7.5 9.7 8.9 9.6 7.8 6.5 7.1 8.0 6.6 8.0 8.5 8.9
8.7 7.9 8.8 9.2 7.6 9.1 6.8 9.0 7.8 9.4 8.3 9.2
8.9 7.8 8.7 8.6 8.5 7.4 6.5 9.4 7.7 8.9 6.9 8.4
7.8 8.5 7.6 6.6 8.7 7.8 9.5 7.8 9.9 7.3 8.9 7.7
8.9 7.9 8.8 9.0 7.9 9.2 8.7 8.7 8.9 7.9 8.7 7.7

本题相关知识传送门

txt文件处理

list排序,计算平均值,总值

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blockchain_KT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值