直接上代码,解释在注释,不懂评论留言,必回
'''
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/"
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
本题相关知识传送门
本文发布于:2024-01-29 17:56:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170652219917250.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |