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

Python按规则用5kg/1kg箱装料的while循环程序bug排查

问题分析

你的代码存在两个核心错误:

  • 逻辑位置错误:剩余重量校验、1kg箱数量判断的逻辑放在了while循环内部,每使用1个5kg箱就会执行一次判断,还没等用完所有可用的5kg箱就提前输出结果。比如示例1的场景,第一次循环后剩余9kg物料,代码会直接判断6个1kg箱不够装9kg,提前输出-1,完全忽略还有1个可用的5kg箱,这是误输出-1的核心原因
  • 分支覆盖不全:如果while循环结束后没有命中任何内部的if分支,程序不会产生任何输出,表现为随机停止运行
修正后的代码
s = int(input("Amount of 5kg boxes: "))
v = int(input("Amount of 1kg boxes: "))
k = int(input("Material in kg's: "))

def box(a, b, c):
    total_box = 0
    # 优先用完所有可用的5kg箱
    while c >= 5 and a > 0:
        c -= 5
        a -= 1
        total_box += 1
    # 所有5kg箱用完后统一校验剩余重量
    if c == 0:
        return total_box
    elif b >= c:
        return total_box + c
    else:
        return -1

print(box(s, v, k))
代码说明
  • 把剩余重量的判断逻辑移到while循环外部,确保先用完所有可用的5kg箱后再统一校验
  • 用return返回结果替代循环内的print,避免提前输出错误值,最后统一打印返回结果
  • 覆盖所有分支场景:剩余重量为0直接返回总箱数、剩余重量不超过1kg箱可用数量返回总箱数、其余情况返回-1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:54:03