10人のプレイヤーのランキングを処理するPythonファイル

コードに直接移動し、コメントで説明し、コメントを理解せず、メッセージを残します。返信する必要があります

'''
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.99.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 8.9 6.5 9.4 7.7 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ファイルの処理

リストの並べ替え、平均の計算、合計値

おすすめ

転載: blog.csdn.net/weixin_43402353/article/details/109146514