习题:唱歌比赛有n名选手,m名评委。 编程实现: (1)评分标准为:去掉两个最高分和两个最低分后取平均分。 (2)每位选手演唱完毕后,现场显示每位评委的打分, 和选手的最后得分。 (3)比赛结束后,从高分到低分,显示所有选手的成绩
时间: 2023-06-19 16:09:44 浏览: 173
以下是一个实现该比赛流程的 Python 代码:
```python
import random
# 输入选手人数和评委人数
n = int(input("请输入选手人数:"))
m = int(input("请输入评委人数:"))
# 初始化选手得分列表
scores = [[] for i in range(n)]
# 输入每位选手的名字
names = []
for i in range(n):
name = input("请输入第{}位选手的名字:".format(i+1))
names.append(name)
# 模拟比赛过程
for i in range(n):
print("第{}位选手 {} 开始演唱:".format(i+1, names[i]))
# 随机生成每位评委的分数
for j in range(m):
score = random.randint(60, 100)
scores[i].append(score)
print("第{}位评委的分数是:{}".format(j+1, score))
# 去掉两个最高分和两个最低分,计算平均分
sorted_scores = sorted(scores[i])
avg_score = sum(sorted_scores[2:-2]) / (m-4)
print("该选手最终得分是:{:.2f}\n".format(avg_score))
# 按得分从高到低排序
rankings = sorted(list(zip(names, [sum(sorted(s)[2:-2])/(m-4) for s in scores])), key=lambda x: x[1], reverse=True)
# 输出所有选手的成绩
print("比赛结束,所有选手的成绩如下:")
for i, (name, score) in enumerate(rankings):
print("第{}名:{},得分:{:.2f}".format(i+1, name, score))
```
运行示例:
```
请输入选手人数:3
请输入评委人数:5
请输入第1位选手的名字:张三
请输入第2位选手的名字:李四
请输入第3位选手的名字:王五
第1位选手 张三 开始演唱:
第1位评委的分数是:81
第2位评委的分数是:78
第3位评委的分数是:75
第4位评委的分数是:62
第5位评委的分数是:95
该选手最终得分是:79.33
第2位选手 李四 开始演唱:
第1位评委的分数是:90
第2位评委的分数是:63
第3位评委的分数是:83
第4位评委的分数是:93
第5位评委的分数是:70
该选手最终得分是:83.20
第3位选手 王五 开始演唱:
第1位评委的分数是:61
第2位评委的分数是:80
第3位评委的分数是:76
第4位评委的分数是:92
第5位评委的分数是:85
该选手最终得分是:80.67
比赛结束,所有选手的成绩如下:
第1名:李四,得分:83.20
第2名:王五,得分:80.67
第3名:张三,得分:79.33
```
阅读全文