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

Python计算学生平均成绩时最高分及姓名无法显示问题排查

学生课程平均分计算功能修复

现存逻辑错误

  • totalgrade 函数返回值固定为初始定义的0,没有返回实际计算得到的学生平均成绩,主函数无法获取学生真实得分
  • 主函数遍历学生时没有存储每个学生的成绩和对应姓名,循环结束后只会保留最后一个学生的计算结果,前一个学生的数据直接丢失
  • 最高分对比逻辑位置错误,写在了学生遍历循环外部,且直接将整个姓名元组赋值给最高分姓名字段,无法匹配到单个最高分学生
  • 函数调用参数不匹配:highestgrade 定义时需要传入成绩、姓名两个参数,主函数调用时没有传任何参数,会直接触发运行报错
  • 计算逻辑矛盾:代码注释标注编程作业占比50%,实际计算时按60%取值;average 函数return语句后定义的三个权重变量永远不会执行,属于无效代码;totalgrade 内的while循环没有设置退出条件,属于冗余逻辑

修正后完整代码

def main():
    names = ("Rebecca", "Jennifer")
    Welcome()
    student_records = []
    for name in names:
        avg = totalgrade(name)
        student_records.append((name, avg))
    highestgrade(student_records)

def Welcome():
    print("Hello, this program will calculate the average grade\n")

def average(totalgrade, num):
    return totalgrade / num

def totalgrade(name):
    print("Please enter your grades for the following assignments:", name)
    db = int(input("What was your discussion board grade?\n"))
    q = int(input("What was your quiz grade?\n"))
    pa = int(input("What was your program assignment grade?\n"))
    # 按权重计算折算后总分,三类作业满分均为100,总权重100%
    total_weighted_score = (db/100)*15 + (q/100)*25 + (pa/100)*60
    grade_average = total_weighted_score
    print(f"Total number of points: {db+q+pa} out of 300")
    print(f"Your grade average for this course is: {grade_average:.2f}%\n")
    return grade_average

def highestgrade(student_records):
    top_name, top_score = max(student_records, key=lambda x: x[1])
    print(f"The student with the highest grade of {top_score:.2f}% is: {top_name}")
        
if __name__ == "__main__":
    main()

调整说明

  • 主函数中新增列表存储所有学生的(姓名,平均分)记录,避免循环覆盖导致数据丢失
  • 修正totalgrade返回值,直接返回计算得到的加权平均分,移除无效死循环、永远不会执行的冗余变量定义
  • 调整highestgrade参数逻辑,直接传入所有学生记录,通过max函数取最高分对应的学生信息
  • 统一成绩计算逻辑,输出格式和原需求保持一致

内容的提问来源于stack exchange,提问作者ww25

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:39:27