[题目描述]
最近学校组织了校园歌手大赛,并且让全校师生为歌手评分(分数的范围为 1−100 分),但由于投票系统太过于落后,最后的计票中发现了如下几种票:
- 分数大于 100
- 分数小于 1
- 一个最高分
- 一个最低分
最终的计票要将上述几种票去除后算出平均值,请你求出最后的分数。
输入:
一行一个正整数 N ,表示票的总数。一行 N 个整数,表示每张票上的分数,中间用空格分隔。
输出:
输出最后的分数(保留两位小数)。
样例输入1
8
131 -12 60 20 2 -999 100000 100
样例输出1
40.00
来源/分类(难度系数:一星)
完整代码展示:
a=int(input())
b=list(map(int,input().split()))
c=[]
for i in range(0,len(b)):
if 1<=b[i]<=100:
c.append(b[i])
c.sort()
c.remove(c[0])
c.remove(c[-1])
print("{:.2f}".format(sum(c)/len(c)))
代码解释:
“a=int(input()) ”,让用户输入总的票数a。
“b=list(map(int,input().split())) ”,让用户输入每张票的分数,并将其储存在列表b中。
“c=[]
for i in range(0,len(b)):
if 1<=b[i]<=100:
c.append(b[i]) ”,先按筛选条件的第一,二项进行筛选:即建立一个空列表c,接着依次遍历列表b中元素,并判断该元素是否大于等于1且小于等于100,如果是,则将其添加进列表c中。
“c.sort()
c.remove(c[0])
c.remove(c[-1]) ”,后按筛选条件的第三,四项进行筛选:遍历结束后,对c中元素进行升序排序,然后移除c中最大值c[-1],最小值c[0]。
“print("{:.2f}".format(sum(c)/len(c))) ”,打印c中元素的平均值,并保留两位小数。
运行效果展示:
(声明:以上内容均为原创)