You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python计算5名学生成绩、等级分布程序异常排查求助

代码问题排查

  • read_test_scores函数存在两处错误:
    1. 求和时使用了未定义的变量score,你分别定义了score1到score5五个分数变量,正确求和应该是五个变量相加,另外不要用sum作为变量名,这是Python内置函数名,会覆盖原有功能。
    2. 函数仅返回了平均分,没有返回所有学生的分数列表,后续无法统计每个分数对应的等级。
  • get_letter_grade函数缺少参数定义:函数内判断使用的变量n没有作为形参传入,调用时无法获取要计算的分数值,需要修改函数定义为def get_letter_grade(n):。
  • print_comment函数逻辑完全不符合需求:
    1. 计数变量定义在函数内部,每次调用都会重置为0,无法累计所有学生的等级数量。
    2. 当前逻辑只能打印当前传入等级的计数,无法输出全部5个等级的统计结果,也不能输出计数为0的等级(如示例中的F等级)。
  • 主执行逻辑存在两处错误:
    1. 没有遍历每个学生分数计算对应等级,直接调用print_comment(grade)时,grade是未定义变量,会直接报错。
    2. 最终平均分输出的提示文本和预期不符,需要调整为要求的格式。

修正后可运行代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:45:02