Python 中遇到的问题,求解

img

img


该函数现在完成成这样,但是输入除了A到O以外的任何元素都会报错,如果想让他不报错并提示要求,如何在input前加try呢

在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)    

img