python 为丰富校园文化生活,学校拟组织一场歌手大赛,从参赛选手中选拔出十名相对突出的学生,授予“校园十大歌手”称号。比赛之中设置有评委组,每名选手演唱完毕之后会由评委组的十名评委打分。为保证比赛公平公正、防止作弊和恶意打分,计算得分(即平均分)时会先去掉最高分和最低分。
时间: 2024-11-04 18:14:05 浏览: 57
评委打分自动计算程序
4星 · 用户满意度95%
在Python中组织这样一场歌手大赛,可以利用其简洁的数据结构和强大的处理能力来设计计分系统。首先,可以创建一个数据结构,比如列表,来存储每位选手的评分。然后按照以下步骤操作:
1. **收集分数**:当所有选手表演完后,将每位评委的打分添加到选手的评分列表中。
2. **预处理数据**:为了计算平均分并去除最高分和最低分,可以使用`heapq`库中的`nlargest`和`nsmallest`函数。这两个函数分别用于找到列表中最大的n个数和最小的n个数。在这里,n就是评委人数减去2(因为要去掉最高分和最低分)。
```python
import heapq
def calculate_score(grades_list):
# 使用堆排序原理获取去除两个极端值后的中间8位评委的评分
non_extremes = [grade for grade in grades_list if grade not in heapq.nlargest(2, grades_list) and grade not in heapq.nsmallest(2, grades_list)]
# 计算平均分
average_score = sum(non_extremes) / len(non_extremes)
return average_score
```
3. **应用到每位选手**:对每位选手的评分列表调用这个函数,得到他们的有效平均分。
4. **结果筛选**:最后根据每个选手的有效平均分对所有选手进行排序,选择前10名作为“校园十大歌手”。
阅读全文