python歌手大赛评分简易项目代码❤

    青年歌手大奖赛是一个重要的比赛项目。其决赛记分规则为:去掉一个最高分,去掉一个最低分,然后求剩余分数的平均值作为最后成绩。编写一个竞赛评分的函数过程。评委打分为参数(数组参数),选手得分为函数值。调用该函数,由键盘输入n个评委的打分(存放在数组中),输出最终的成绩。编写代码,模拟决赛现场最终成绩的计算过程。

程序流程图如下图所示。

代码如下:

# 循环用于确保用户输入一个大于2的整数作为评委人数  
while True:  
    try:  
        # 尝试将用户输入转换为整数  
        n = int(input('请输入评委人数:'))  
        # 检查评委人数是否大于2  
        if n <= 2:  
            print('评委人数太少, 必须多于2个人。')  
        else:  
            # 如果评委人数大于2,则跳出循环  
            break  
    # 如果用户输入的不是整数,将捕获ValueError异常  
    except ValueError:  
        print('请输入一个整数。')  
  
# 初始化一个空列表用于保存所有评委的打分  
scores = []  
  
# 循环n次,每次循环用于获取一个评委的打分  
for i in range(n):  
    while True:  
        try:  
            # 尝试获取用户输入的分数并转换为浮点数  
            score = float(input('请输入第{0}个评委的分数:'.format(i+1)))  
            # 检查分数是否在0到100之间  
            if 0 <= score <= 100:  
                # 如果分数合法,则添加到scores列表中并跳出内部循环  
                scores.append(score)  
                break  
            else:  
                # 如果分数不合法,则提示用户重新输入  
                print('分数必须在0到100之间。')  
        # 如果用户输入的不是一个有效的数字,将捕获ValueError异常  
        except ValueError:  
            print('请输入一个有效的数字。')  
  
# 计算并删除最高分与最低分  
highest = max(scores)  
lowest = min(scores)  
scores.remove(highest)  
scores.remove(lowest)  
  
# 计算平均分,保留2位小数  
finalScore = round(sum(scores) / len(scores), 2)  
  
# 使用格式化字符串输出结果  
formatter = '去掉一个最高分{:.2f}\n去掉一个最低分{:.2f}\n最后得分{:.2f}'  
print(formatter.format(highest, lowest, finalScore))

 

解释如下:

  1. 确保评委人数大于2:通过while True循环不断要求用户输入评委人数,直到输入的数字大于2为止。使用try-except结构来捕获可能的ValueError异常,比如当用户输入的不是一个整数时。

  2. 获取评委的打分:使用for循环n次,每次循环内部都有一个while True循环,用于确保用户输入的分数是合法的(即0到100之间的数字)。同样使用try-except结构来捕获可能的ValueError异常。

  3. 计算平均分:在获取了所有合法的评委打分后,首先找到最高分和最低分,并从列表中移除它们。然后计算剩余分数的平均值,并使用round函数保留两位小数。

  4. 输出结果:使用格式化字符串来输出最高分、最低分和最后得分,并使用{:.2f}来确保分数以两位小数的形式显示。

程序的一次运行结果:

请输入评委人数:7

请输入第1个评委的分数:86

请输入第2个评委的分数:87

请输入第3个评委的分数:84

请输入第4个评委的分数:87

请输入第5个评委的分数:83

请输入第6个评委的分数:89

请输入第7个评委的分数:92

去掉一个最高分92.0

去掉一个最低分83.0

最后得分86.6

 

 

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值