在32行那个if后面加个else分支来处理输入的不是A到O之间的值,可以在这个else分支用个continue 继续循环再次获取学生姓名即可,修改如下:
参考链接:
round在python是什么意思_细说python中的round()方法_weixin_39998903的博客-CSDN博客
import random
import time
random.seed(1)
scores=[random.randint(35,100) for _ in range(15)]
students=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O']
print(scores)
students_scores=dict(zip(students,scores))
print(students_scores)
List = sorted(students_scores.items(),key=lambda x:x[1],reverse=True)
to_dict=dict(List)
print('成绩排列:',to_dict)
average = round(sum(scores)/len(scores),2)
while True:
name=input("请输入要查询的学生姓名:")
if name in students_scores.keys():
mean=0
else:# 当输入的学生姓名不是A到O之间的字母,则继续循环再次获取学生姓名
continue
for student in students_scores:
mean+=students_scores[student]
mean/=len(students_scores)
if students_scores[name]>mean:
print(f'{name}同学的分数是{students_scores[name]},该学生的成绩属于上等水平')
elif students_scores[name]==mean:
print(f'{name}同学的分数是{students_scores[name]},该学生的成绩属于中等水平')
else:
print(f'{name}同学的分数是{students_scores[name]},该学生的成绩属于下等水平')
print("全班平均分为",mean)