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

Python 3.9成绩判定程序未通过隐藏测试,请求逻辑排查修正

代码问题排查与修正

需求回顾

需开发Python程序,接收论文成绩(papers)和常规考试成绩(test)两个实数,二者各占最终平均分50%,判定学生三类情况:

  • 通过(Passed):最终平均分≥6;
  • 可参加替代考试:替换常规考试为满分(10分)后,最终平均分≥6;
  • 不及格(Failed):当前平均分<6,且替换后仍<6。

原代码问题分析

papers = float(input())
test = float(input())
avg = (papers + test) / 2
sub_test = 10

if avg >= 6:
    print("passed")
elif test or papers or avg < 0:
    if test == 0:
        avg = (sub_test + papers) / 2
        print( "Perhaps with the substitutive test")
    elif papers == 0 or avg < 6:
        avg = avg
        print( "failed")

原代码存在多处逻辑错误,导致无法通过测试:

  1. 条件分支逻辑偏离需求:elif test or papers or avg < 0 完全不符合判定逻辑,该条件会在test/papers非零、或平均分小于0时触发,和需求的三类情况判定无关。
  2. 替代考试判定限制错误:错误地将test == 0作为触发替代考试判断的前提,需求中无此限制,只要替换常规考试为满分后的平均分≥6,就符合替代考试条件。
  3. 不及格判定逻辑混乱:最后的elif papers == 0 or avg < 6没有正确判断替换后的平均分是否仍低于6,无法覆盖所有不及格场景。

修正后的代码

papers = float(input())
test = float(input())

current_avg = (papers + test) / 2
substitute_avg = (papers + 10) / 2  # 替换常规考试为满分后的平均分

if current_avg >= 6:
    print("Passed")
elif substitute_avg >= 6:
    print("Perhaps with the substitutive test")
else:
    print("Failed")

逻辑说明

  1. 先计算当前平均分和替换后的平均分两个核心值;
  2. 优先判断当前平均分是否≥6,满足则输出Passed;
  3. 若当前不通过,判断替换后的平均分是否≥6,满足则输出替代考试提示;
  4. 若上述两个条件都不满足,输出Failed。

这个逻辑完全贴合需求,能正确覆盖所有测试场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:25:29