这道题目是一个学校举办歌唱比赛,邀请十位评委为参赛选手打分。编程实现计算选手的最后得分,分数计算方法如下: (1)去掉一个最低分(有相等最低分,则去掉其中1个) (2)去掉一个最高分(有相等最高分,则去掉其中1个) (3)最终得分为余下下四位评委的平均分。 要求:所有评委的一次打分情况由用户输入,并存放于元组之中,使得评分数据不能修改。
时间: 2023-11-27 12:53:34 浏览: 111
比赛评委亮分计算表 去掉最高分和 最低分
以下是Python实现代码:
```python
# 获取去掉最高分和最低分后的分数列表
def get_scores(scores):
sorted_scores = sorted(scores) # 排序
min_score = sorted_scores[0]
max_score = sorted_scores[-1]
if min_score == max_score: # 处理有相等最高分或最低分的情况
for s in sorted_scores[1:-1]:
if s != min_score:
min_score = s
break
for s in sorted_scores[-2:0:-1]:
if s != max_score:
max_score = s
break
else: # 正常情况下去掉最高分和最低分
min_score = sorted_scores[1]
max_score = sorted_scores[-2]
return sorted_scores[1:-1], min_score, max_score
# 获取最终得分
def get_final_score(scores):
scores, min_score, max_score = get_scores(scores)
return sum(scores) / len(scores)
# 主程序
if __name__ == '__main__':
scores = tuple(map(float, input("请输入十位评委的分数,用空格隔开:").split()))
final_score = get_final_score(scores)
print("最终得分为:{:.2f}".format(final_score))
```
其中,`get_scores`函数用于获取去掉最高分和最低分后的分数列表、最低分和最高分;`get_final_score`函数用于计算最终得分;主程序中先输入十位评委的分数,再调用`get_final_score`函数计算最终得分并输出。注意,输入的分数需要转换为浮点数并存放于元组之中,以避免被修改。
阅读全文