编写代码,模拟决赛现场最终成绩的计算过程。至少有3个评委,打分规则为删除最高分和最低分之后计算剩余分数的平均分。
首先使用一个循环要求用户输入评委人数(应大于2,至少有3个评委),然后再使用一个循环输入每个评委的打分,在两个循环中都使用了异常处理结构来保证用户输入的是整数,最后删除最高分和最低分,并计算剩余分数的平均分。
while True:
try:
n=int(input('请输入评委人数:'))
if n<=2:
print('评委人数太少,必须多于两个人')
else:
break
except:
pass
scores=[]
for i in range(n):
while True:
try:
score=input("请输入第{0}个评委的分数".format(i+1))
score=float(score)
assert 0<=score<=100
scores.append(score)
break
except:
print("分数错误")
highest=max(scores)
lowest=min(scores)
scores.remove(highest)
scores.remove(lowest)
final=round(sum(scores)/len(scores),2)
formatter='去掉一个最高分{0}去掉一个最低分{1}最终得分是{2}'
print(formatter.format(highest,lowest,final))
score=input(“请输入第{0}个评委的分数”.format(i+1))中括号内的“.”误写成了“,”,导致的结果为:评委人数为1正常,评委人数为2正常,当评委人数大于2后,运行结果“分数错误”的死循环,导致卡顿甚至是强制退出。