Python洛谷做题31:P5726 【深基4.习9】打分
文章目录
- P5726 【深基4.习9】打分
- 题目描述
- 输入格式
- 输出格式
- 说明/提示
- 思路分析及代码
P5726 【深基4.习9】打分
题目描述
现在有 n(n≤1000)n(n \le 1000)n(n≤1000) 位评委给选手打分,分值从 000 到 101010。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 222 位小数。
输入格式
第一行输入一个正整数 nnn,表示有 nnn 个评委。
第二行输入 nnn 个正整数,第 iii 个正整数表示第 iii 个评委打出的分值。
输出格式
输出一行一个两位小数,表示选手的最后得分。
输入输出样例 #1
输入 #1
5
9 5 6 8 9
输出 #1
7.67
说明/提示
数据保证,3≤n≤10003 \leq n \leq 10003≤n≤1000,每个评委打出的分值为为 000 到 101010(含 000 与 101010)之间的整数。
思路分析及代码
说到最值、平均数,一下子就想到了列表。
列表中max()求最大值,min()求最小值,len()求列表元素个数,sum()求总和。
对第二行输入的数字进行处理:先按空格分割,再转换为int()类型,最后转为列表。
具体代码如下:
n=int(input())
num=list(map(int,input().split()))
num.remove(max(num))
num.remove(min(num))
print(num)
print("%.2f"%(sum(num)/len(num)))
但本题在洛谷中是为了练习循环。所以用循环的思想做一下。
n=int(input())
num=list(map(int,input().split()))
total=0 #统计所有分数之和
maxi=0#存储最大值
mini=10#存储最小值
for i in num:if i>maxi:maxi=iif i<mini:mini=itotal+=i
total=total-maxi-mini #去除最值
print("%.2f"%(total/(n-2)))