Python计算5名学生成绩、等级分布程序异常排查求助
代码问题排查
read_test_scores函数存在两处错误:- 求和时使用了未定义的变量
score,你分别定义了score1到score5五个分数变量,正确求和应该是五个变量相加,另外不要用sum作为变量名,这是Python内置函数名,会覆盖原有功能。 - 函数仅返回了平均分,没有返回所有学生的分数列表,后续无法统计每个分数对应的等级。
- 求和时使用了未定义的变量
get_letter_grade函数缺少参数定义:函数内判断使用的变量n没有作为形参传入,调用时无法获取要计算的分数值,需要修改函数定义为def get_letter_grade(n):。print_comment函数逻辑完全不符合需求:- 计数变量定义在函数内部,每次调用都会重置为0,无法累计所有学生的等级数量。
- 当前逻辑只能打印当前传入等级的计数,无法输出全部5个等级的统计结果,也不能输出计数为0的等级(如示例中的F等级)。
- 主执行逻辑存在两处错误:
- 没有遍历每个学生分数计算对应等级,直接调用
print_comment(grade)时,grade是未定义变量,会直接报错。 - 最终平均分输出的提示文本和预期不符,需要调整为要求的格式。
- 没有遍历每个学生分数计算对应等级,直接调用
修正后可运行代码
def read_test_scores(): print("Enter number of students: ") num = int(input()) scores = [] for _ in range(num): print("Enter the next grade: ") scores.append(int(input())) total = sum(scores) avg = total / num return scores, avg def get_letter_grade(n): if 90 <= n <= 100: return 'A' elif 80 <= n <= 89: return 'B' elif 70 <= n <= 79: return 'C' elif 60 <= n <= 69: return 'D' else: return 'F' def calculate_distribution(scores): count = {'A':0, 'B':0, 'C':0, 'D':0, 'F':0} for score in scores: grade = get_letter_grade(score) count[grade] += 1 return count scores, avg = read_test_scores() distribution = calculate_distribution(scores) print('Grade Distribution') print(f"A: {distribution['A']}") print(f"B: {distribution['B']}") print(f"C: {distribution['C']}") print(f"D: {distribution['D']}") print(f"F: {distribution['F']}") print(f"Average Grade: {avg}")
运行验证
输入题目给出的测试用例,即可得到完全符合要求的输出结果。
内容的提问来源于stack exchange,提问作者Barry
相关产品推荐
相关产品推荐

