模拟决赛现场最终成绩计算过程
键盘输入:k,n (n>2k), 若不合法,重新输入。
-
首先输入大于3的整数n作为评委人数,输入每个选手的姓名,然后依次输入每个评委的打分,要求每个分数都介于0~100。
-
输入完所有的评委打分后,去掉一个k最高分,去掉一个k最低分,剩余分数的评价分即为该选手的最终得分。
-
最后打印输出各选手的得分情况,并以逆序输出。
- 本程序的核心在于使用try-except做输入数据的检验,只有当输入的数据满足条件才会退出
while True
循环,当数据不符合规范时便会raise一个异常,让用户再次输入,直至输入正确 - 在判断输入的分数是否介于0~100时,使用了
[x >= 0 and x <= 100 for x in scorelist]
列表解析式得到各元素是否符合的布尔列表,再通过all()判断是都全符合:如果元祖或列表中所有元素不为0、空(’’)、False 即所有元素满足0<=x<=100返回True,否则返回False。 - 将选手名作为键,最终得分作为值放入字典中,再通过字典解析式进行以值为准的逆序排序。
while True:
try:
# 先输入 k表示选手个数
k = int(input('请输入选手个数'))
if k < 1:
raise ValueError("选手个数非法")
# 再输入 n表示评委人数
n = int(input('请输入评委人数'))
if n <= 3