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

Python最终成绩计算函数if分支内print语句不输出问题求助

问题原因
  • 遍历逻辑完全错误:主程序每次调用finalized_grades时,传入的course_grades、exam_grades都是单组成绩的一维列表(比如首次调用传入的是[55,21,30,58,49]),for c in course_grades遍历拿到的是55、21这类整数数值,拿数值和[0]、[1]这类列表做相等判断,永远不会返回True,所以所有if分支都不会执行,内部的print语句自然没有输出。
  • 参数使用逻辑错误:主程序每次调用时传入的course_exam_bonus、exam_bonus都是单个浮点数(比如首次调用传入的是1.0、3.0,不是列表),你代码中写的course_exam_bonus[0]属于对数值类型取下标,一旦触发会直接报错,只是因为if分支从未执行所以没有暴露该问题。
  • 初始打印变量错误:开头打印Exams时错误传入了course_grades,导致输出的考试成绩和平时成绩完全一致,不符合实际情况。
  • 总成绩计算逻辑错误:循环计算总成绩时每次都给total赋值为单元素列表,不会累计生成完整的总成绩列表。
修复方案

不需要修改主程序,仅修改finalized_grades函数的逻辑即可,修复后代码如下:

def finalized_grades(course_grades, exam_grades, course_exam_bonus, exam_bonus):
    # 直接按传入的系数计算调整后的成绩
    adj_course = [x * course_exam_bonus for x in course_grades]
    adj_exam = [x * exam_bonus for x in exam_grades]
    # 对应位置相乘计算总成绩
    total = [a * b for a, b in zip(adj_course, adj_exam)]
    # 修复打印逻辑
    print('Before update:')
    print('Coursework = {}'.format(course_grades))
    print('Exams = {}'.format(exam_grades))
    print('Scale = {}, Bonus = {}'.format(course_exam_bonus, exam_bonus))
    print('After update:')
    print('Coursework = {}'.format(adj_course))
    print('Exams = {}'.format(adj_exam))
    print('Total = {}'.format(total))
    return total

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 01:57:03