这是一个关于歌手大奖赛的问题。在比赛中,有10个评委为参赛选手打分,分数范围为1~100分。选手最终得分是去掉一个最高分和一个最低分后,剩下8个分数的平均值。同时,还需要考虑对评委评分进行裁判,找出最公平和最不公平的评委。请编写一个程序实现这个功能。
时间: 2024-02-12 14:04:04 浏览: 330
西工大C++程序设计大作业
3星 · 编辑精心推荐
好的,我来为您编写一个Python程序,实现这个功能。
```python
# 定义一个函数,返回去掉最高分和最低分后的平均分
def calculate_score(scores):
scores.remove(max(scores))
scores.remove(min(scores))
return sum(scores) / len(scores)
# 输入10个评委的评分
scores = []
for i in range(10):
score = int(input("请输入第{}个评委的评分(1~100):".format(i+1)))
while score < 1 or score > 100: # 判断输入是否合法
score = int(input("请输入第{}个评委的评分(1~100):".format(i+1)))
scores.append(score)
# 计算每个选手的得分
final_scores = []
for i in range(5):
# 输入两个选手的评分
print("第{}组选手:".format(i+1))
scores1 = scores.copy()
scores2 = scores.copy()
for j in range(10):
score = int(input("请输入第{}个评委的评分(1~100):".format(j+1)))
while score < 1 or score > 100: # 判断输入是否合法
score = int(input("请输入第{}个评委的评分(1~100):".format(j+1)))
if j < 5:
scores1[j] = score
else:
scores2[j-5] = score
# 计算两个选手的得分并输出
score1 = calculate_score(scores1)
score2 = calculate_score(scores2)
print("选手1的得分为:{:.2f},选手2的得分为:{:.2f}".format(score1, score2))
# 判断哪个选手得分更高
if score1 > score2:
final_scores.append(score1)
else:
final_scores.append(score2)
# 找出最终得分最高的选手
winner = final_scores.index(max(final_scores)) + 1
print("最终得分最高的选手是第{}组选手,得分为{:.2f}分。".format(winner, max(final_scores)))
# 找出最公平和最不公平的评委
avg_score = sum(scores) / len(scores) # 所有评委的平均分
fairness = float('inf') # 初始设为正无穷大
unfairness = 0 # 初始设为0
fairness_judge = 0 # 最公平的评委编号
unfairness_judge = 0 # 最不公平的评委编号
for i in range(10):
diff = abs(scores[i] - avg_score)
if diff < fairness:
fairness = diff
fairness_judge = i + 1
if diff > unfairness:
unfairness = diff
unfairness_judge = i + 1
print("最公平的评委是第{}个评委,得分为{}分。".format(fairness_judge, scores[fairness_judge-1]))
print("最不公平的评委是第{}个评委,得分为{}分。".format(unfairness_judge, scores[unfairness_judge-1]))
```
这个程序可以实现输入每个评委的评分,计算每组比赛中两个选手的得分,以及最终得分最高的选手。同时,它还可以找出最公平和最不公平的评委。希望对您有所帮助!
阅读全文