21软件1班进行了一场班级好声音歌唱比赛,现有8位评委对参赛的8位选手给出了最终的评分,请根据评分表,将每位选手的得分去掉一个最高分和一个最低分后求平均分,并按照平均分由高到低的顺序输出选手编号、选手姓名
时间: 2024-06-11 19:07:56 浏览: 131
、平均分。
假设8位选手的编号、姓名分别为:
1. 张三
2. 李四
3. 王五
4. 赵六
5. 小明
6. 小红
7. 小刚
8. 小李
8位评委的评分表如下:
| 选手\评委 | 评委1 | 评委2 | 评委3 | 评委4 | 评委5 | 评委6 | 评委7 | 评委8 |
| --------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |
| 张三 | 80 | 85 | 90 | 95 | 100 | 75 | 70 | 65 |
| 李四 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 65 |
| 王五 | 90 | 85 | 80 | 75 | 70 | 65 | 60 | 55 |
| 赵六 | 85 | 90 | 95 | 100 | 75 | 70 | 65 | 60 |
| 小明 | 75 | 80 | 85 | 90 | 95 | 100 | 75 | 70 |
| 小红 | 85 | 90 | 95 | 100 | 75 | 70 | 65 | 60 |
| 小刚 | 80 | 85 | 90 | 95 | 100 | 75 | 70 | 65 |
| 小李 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 65 |
根据题目要求,需要先对每位选手的得分进行处理,去掉一个最高分和一个最低分,然后求平均分。这个处理过程可以通过编写一个函数来实现。
首先,我们需要定义一个二维列表来表示评分表:
```
scores = [
[80, 85, 90, 95, 100, 75, 70, 65],
[70, 75, 80, 85, 90, 95, 100, 65],
[90, 85, 80, 75, 70, 65, 60, 55],
[85, 90, 95, 100, 75, 70, 65, 60],
[75, 80, 85, 90, 95, 100, 75, 70],
[85, 90, 95, 100, 75, 70, 65, 60],
[80, 85, 90, 95, 100, 75, 70, 65],
[70, 75, 80, 85, 90, 95, 100, 65]
]
```
然后,我们可以编写一个函数来进行处理:
```
def process_scores(scores):
processed_scores = []
for i in range(len(scores)):
processed_scores.append(sorted(scores[i])[1:-1])
return [sum(s) / len(s) for s in processed_scores]
```
这个函数会遍历评分表中每一行的数据,去掉最高分和最低分后求平均分,并将这些平均分保存在一个列表中。
接下来,我们可以调用这个函数来处理评分表,并将得到的平均分与选手编号、选手姓名一起保存在一个列表中,然后按照平均分从高到低排序:
```
# 选手编号和姓名
players = [
(1, '张三'),
(2, '李四'),
(3, '王五'),
(4, '赵六'),
(5, '小明'),
(6, '小红'),
(7, '小刚'),
(8, '小李')
]
# 处理评分表
processed_scores = process_scores(scores)
# 组装结果数据
result = list(zip(players, processed_scores))
# 按照平均分排序
result.sort(key=lambda x: x[1], reverse=True)
```
最后,我们可以遍历排序后的结果,输出选手编号、选手姓名和平均分:
```
# 输出结果
for p, s in result:
print(f'{p[0]}\t{p[1]}\t{s:.2f}')
```
完整代码如下:
阅读全文