模拟决赛现场最终成绩的计算过程及可视化

综合实例2:模拟决赛现场最终成绩的计算过程 【功能要求】编写程序,模拟决赛现场最终成绩的计算过程。首先输入评委人数,要求判断评委不得少于5人;然后依次输入评委的成绩,成绩范围应在[0,100]。在所有评委的分数中,去掉一个最高分、去掉一个最低分,剩余成绩求算数平均分,作为选手的最终成绩。 【教学目标】 (1)熟练运用选择、循环结构控制,熟悉通过异常处理约束用户输入的方法; (2)熟练使用列表的常用函数和方法; (3)输入数据类型的处理。 (4)可扩展多位选手成绩的数据可视化 【参考代码】 while True: try: n = int(input('')) if n>=5: break else: print('有效评委应至少5人!请确认后重新录入:') except: print('请重新录入有效数字:') scores = [] #依次录入每位评委的成绩 for i in range(n): while True: try: score = float(input('请输入第{}个评委的分数:'.format(i+1))) if 1<=score<=100: scores.append(score) break except: print('分数未符合规范,请在1~100之间,确认后重新录入。') #去掉最高分和最低分 highest = max(scores) scores.remove(highest) lowest = min(scores) scores.remove(lowest) #计算平均分,保留两个小数位 final_score = round(sum(scores)/len(scores),2) print('去掉一个最高分{:.2f}分,去掉一个最低分{:.2f}分,选手最后得分是:{:.2f}分'.format(highest,lowest,final_score))

注:完成多位选手成绩处理,增加柱状图排名

n = int(input('请输入运动员人数:'))
dic = {}
for i in range(n):
    sno = input("输入运动员编号:").strip()
    s = input("输入每个评委的成绩(以空格分隔):").strip()
    li = [float(x) for x in s.split(" ")]
    li.remove(max(li))
    li.remove(min(li))
    avg = sum(li)/len(li)
    dic[sno] = avg
print(dic)

我也有这个作业,搞了好久了都没做完呜呜呜呜