选手评分系统

这是一个用来解决模拟决赛现场最终成绩的计算过程(首先输入评委人数,要求判断评委不得少于5人;然后依次输入评委的成绩,成绩范围应在[0,100]。在所有评委的分数中,去掉一个最高分、去掉一个最低分,剩余成绩求算数平均分,作为选手的最终成绩。)最后展示多位选手成绩柱状图排名的系统。

代码段

import matplotlib.pyplot as plt
//要求输入评委和选手的人数范围
lis_score = []
n = int(input("输入评委人数:"))
while n < 5:
    print("评委人数需大于4")
    n = int(input("输入评委人数:"))
player = int(input("参赛人数:"))
while player < 2:
    print("参赛人数需大于1")
    player = int(input("参赛人数:"))

//要求分数的取值范围
def check_score(scores):
    if 0 <= scores <= 100:
        return scores
    else:
        print("分数未符合规范,请在1~100之间,确认后重新录入。!")
        scores = int(input("输入分数:"))
        check_score(scores)

//采用循环列出选手的得分,并计算最终平均成绩
j = player
num_list = []
while j > 0:
    num = eval(input("输入选手序号:"))
    num_list.append(num)
    i: int = n
    a = []
    while i > 0:
        score = check_score(int(input("输入该选手分数:")))
        a.append(score)
        i -= 1
    final_score = (sum(a) - min(a) - max(a)) / (n - 2)
    lis_score.append([num, final_score])
    j -= 1
    print('去掉一个最高分{:.2f}分,去掉一个最低分{:.2f}分'.format(max(a), min(a)))
for i in range(player):
    print("选手序号:", num_list[i])
    print('选手最后得分是:{:.2f}分'.format(lis_score[i][1]))
//使用直方图展示选手最终成绩
plt.rcParams['font.family'] = ['SimHei']
plt.title("选手决赛成绩分布柱状图")
for i in range(num):
    x = [num_list[i]]
    height = [lis_score[i][1]]
    plt.bar(x, height)
plt.xlabel("选手序号")  # 设置x轴标签
plt.ylabel("成绩分数段")  # 设置y轴标签
plt.xlim(0, 10)  # 设置x轴区间
plt.xticks(range(1, 10))  # 设置x轴刻度
plt.yticks([0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100])  # 设置y轴刻度
plt.grid()
plt.show()

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敗北97

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值