选手评分问题(python)
任务描述
本关任务:编写一个计算选手实际得分的程序。
评委对选手打分,选手的得分数存在列表中,比如
[
['张三',9.5,9.8,9.7,9.6,9.5,9.9,9.6,9.2,9.3,9.0],
['李四',8.5,8.8,7.7,7.6,8.5,8.3,9.1,7.8,7.5,9.3],
['王五',9.5,8.8,7.2,9.6,8.5,6.5,6.3,7,6.9,9],
['赵六',9.5,9.8,8.7,8.6,7.5,8.8,8.1,9.3,9.2,9.9]
]
计算每位选手的实际得分的规则:去掉一个最高分、一个最低分后计算出平均分(评委的个数大于3个)。
输入格式
用户输入一行内容,包括所有选手的原始得分。
输出格式
按实际得分,输出前2名的名次、姓名和实际得分(输出时保留三位小数),具体格式:
第1名姓名张三,分数是9.595
第2名姓名某某,分数是x.xxx
scorels=eval(input())
scores={}
for scls in scorels:# print(scls)# 每个人都初始化最高分和最低分 maxnum=-1minnum=10minindex,maxindex=0,0 for i in range(1,len(scls)):if scls[i]>maxnum:maxnum=scls[i]maxindex=iif scls[i]<minnum:minnum=scls[i]minindex=i# print(scls[i],end=' ')# 总分初始化都为0tsum=0# 再循环一遍算该名选手的总分,存入字典for i in range(1,len(scls)):tsum+=scls[i]tsum-=scls[maxindex]tsum-=scls[minindex]tavr=float(tsum)/(len(scls)-3)scores[scls[0]]=tavr# print(tsum)# print(len(scls))
# print(scores)
sorted_items=sorted(scores.items(),key=lambda x:x[1],reverse=True)
# print(sorted_items)print('第1名姓名{},分数是{:.3f}'.format(sorted_items[0][0],sorted_items[0][1]))
print('第2名姓名{},分数是{:.3f}'.format(sorted_items[1][0],sorted_items[1][1]))
