Python 代码实现歌手比赛成绩计算:去掉最高最低分求平均分
Python 代码实现歌手比赛成绩计算:去掉最高最低分求平均分
本代码使用 Python 语言实现歌手比赛成绩计算,根据要求先去掉最高分和最低分,再计算平均分。并输出每位选手的平均分、最高分和最低分。
代码如下:
scores = [] # 存放所有选手的成绩
# 输入每位选手的成绩
while True:
score_str = input('请输入选手的成绩(用逗号分隔):')
score_list = score_str.split(',')
if len(score_list) != 8:
print('每位选手需要8个评委打分,请重新输入。')
continue
try:
score_list = [float(score) for score in score_list]
except ValueError:
print('输入的成绩格式有误,请重新输入。')
continue
scores.append(score_list)
if input('是否继续输入下一位选手的成绩?(输入Y继续,其他键退出)').lower() != 'y':
break
# 计算每位选手的平均分
averages = []
for score_list in scores:
score_list.sort() # 先将成绩从低到高排序
score_list = score_list[1:-1] # 去掉最高分和最低分
average = sum(score_list) / len(score_list)
averages.append(average)
# 输出每位选手的平均分
for i, average in enumerate(averages):
print('第{}位选手的平均分为:{:.2f}'.format(i+1, average))
# 输出最高分和最低分
max_score = max(averages)
min_score = min(averages)
print('最高分为:{:.2f},最低分为:{:.2f}'.format(max_score, min_score))
代码解释说明:
- 首先定义一个空列表
scores,用于存放所有选手的成绩。 - 然后使用一个
while循环,不断输入每位选手的成绩。每次输入的成绩是一个字符串,需要使用split()方法将其分割成一个列表,再使用float()将列表中的每个元素转换为浮点数。如果输入的成绩数量不正确或格式有误,会提示用户重新输入。如果用户选择退出输入,循环终止。 - 遍历
scores列表中的每个成绩列表,先将其从低到高排序,再去掉最高分和最低分,最后计算平均分并添加到一个新的列表averages中。 - 遍历
averages列表,输出每位选手的平均分。 - 使用
max()和min()函数分别找到averages中的最高分和最低分,并输出。注意,在计算平均分时已经去掉了最高分和最低分,因此这里不需要再做处理。
总结
本代码实现了歌手比赛成绩的计算,通过去掉最高分和最低分,并计算平均分,可以更准确地反映选手的真实水平。同时,代码包含详细的注释,方便理解和学习。
原文地址: https://www.cveoy.top/t/topic/oBhd 著作权归作者所有。请勿转载和采集!