模拟决赛现场最终成绩的计算过程
**要求:**输入的评委人数在3人以上,评委分数须0-10之间,利用异常进行处理,并计算最终该选手的平均得分(去掉一个最高、最低分)
from collections import defaultdict
while True:
#while True直接告诉你判断的结果,会一直执行循环里的语句
#即意思是要一直进行loop(死循环),通常while true 循环中会加入break条件判断用以在循环内部的某个条件达成时终止循环。
try:
person1 = int(input('请输入评委人数:'))
assert person1 > 3,'评委人数必须在3人以上'
except Exception as e: #统一处理
print(e)
else:
break
#break只能用于while循环或者for循环中
#但是如果if条件语句是套在while循环或者for循环内部的,则break可以使用
score = defaultdict(float)
for i in range(0,person1):
while True: #这个While循环用来保证用户必须输入0到10之间的数字
try:
get = eval(input('打分为:')) #把字符串转换成实数
if type(get) not in [int,float]:
raise Exception
assert 0.0<= get <=10.0,'分数须在0-10分之间'
#若是表达式不成立,则会输出data信息
except Exception as e:
print(e)
else:
score[i+1] = get
break
#如果数据合规,则跳出while循环,继续输入下一个评委的分数(进入for循环)
highest = max(score.values())
lowest = min(score.values())
for k,v in score.items():
print(f'第{k}个评委的分数为:{v}')
finalScore = round(sum(score)-highest-lowest/person1-2,2)
print(f'最高得分为{highest},最低得分为{lowest},平均得分为{finalScore}')
运行结果如下:

文章讲述了如何在模拟决赛现场计算最终成绩,包括获取评委人数,验证分数在0-10范围内,处理异常,去除最高和最低分后计算平均得分的过程。
1万+

被折叠的 条评论
为什么被折叠?



