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

Python实现求小于m的n的倍数之和代码无法通过全量测试排错

你的代码存在以下几处问题:

  • 校验逻辑顺序错误:你把输入合法性校验放在了求和逻辑之后,一旦输入n为0、负数,或者m为负数,执行range生成序列、模运算判断的步骤就会直接抛出异常,根本走不到后面的校验分支。比如输入sum_mul(0,5)会直接触发除以零错误,输入sum_mul(2,-9)生成的列表为空、求和结果为0,也不会触发你写的INVALID分支。
  • 非法场景覆盖不全:题目明确要求n、m均为正整数,只要任意一个参数小于等于0,都属于非法输入,需要返回"INVALID"。你的代码只判断了n和m同时为0、n>m两种情况,漏了n为0、n为负数、m为0、m为负数等多种非法场景。
  • n==m的分支逻辑错误:当n和m都是合法正整数且n==m时,小于m的n的倍数不存在,求和结果为0,你当前返回n-m也就是0的逻辑虽然结果数值对,但这个分支没有先判断输入合法性,要是输入n=-3、m=-3也会返回0,属于非法输入没有拦截。
  • 求和结果判断逻辑错误:你用sum_list >=1作为返回和的条件,当合法输入下没有符合要求的倍数(比如sum_mul(3,3),和为0),就会走到后面的分支,返回不符合预期的结果。

修正后的代码示例

def sum_mul(n, m):
    # 优先拦截所有非法输入
    if n <= 0 or m <= 0:
        return "INVALID"
    # 步长为n的range直接生成所有符合要求的倍数,求和即可
    return sum(range(n, m, n))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:27:01