Python如何根据列表存储的学生分数分配评级并输出姓名分数对应结果
实现代码补充
你可以在原有代码的TODO位置添加以下逻辑,可根据实际需求调整评级对应的分数阈值:
def get_rating(score): if score >= 90: return "A" elif score >= 80: return "B" elif score >= 70: return "C" elif score >= 60: return "D" else: return "F" # 按要求格式打印结果 print("姓名 分数 评级") print("------------") for name, score in result: rating = get_rating(score) print(f"{name} {score} {rating}")
优化后完整代码
同步修正了原有代码的两处小问题:
- 移除了冗余的
i += 1代码,range()会自动控制迭代次数 - 用
int()替换eval()处理分数输入,避免恶意代码执行风险
students = [] for i in range(2): x = input("Enter Student Name. \n") students.insert(i, x) print(students) grades = [] for student in students: grade = int(input(f"Enter the grade for {student}: ")) grades.append(grade) result = list(zip(students, grades)) print(result) average = sum(grades) / len(grades) print("Average is: " + str(average)) total = sum(grades) # print("Total is: " + str(total)) print("Highest marks", max(list(zip(grades, students)))) print("Lowest marks", min(list(zip(grades, students)))) # 评级分配与打印 def get_rating(score): if score >= 90: return "A" elif score >= 80: return "B" elif score >= 70: return "C" elif score >= 60: return "D" else: return "F" print("姓名 分数 评级") print("------------") for name, score in result: rating = get_rating(score) print(f"{name} {score} {rating}")
内容的提问来源于stack exchange,提问作者Ali umer
相关产品推荐
相关产品推荐

