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

CodeBat Python Logic1 caught_speeding函数逻辑错误排查

问题说明
  • 返回值规则:0代表无罚单,1代表小额罚单,2代表大额罚单
  • 非生日场景判定标准:
    • 车速≤60,返回0
    • 车速处于61-80区间(包含两端值),返回1
    • 车速≥81,返回2
  • 生日场景特殊规则:所有车速判定阈值上调5
  • 测试异常现象:调用caught_speeding(65, True)返回1,预期结果应为0;调用caught_speeding(85, True)返回2,预期结果应为1,其余测试用例运行正常,逐行追踪逻辑未定位到错误点。
原实现代码
def caught_speeding(speed, is_birthday):
  
  if speed > 80 or (speed > 85 and is_birthday):
    return 2
  return int((60 < speed <= 80) or (65 < speed <= 85 and is_birthday))
逻辑错误定位

原代码的条件判断存在两处逻辑漏洞:

  1. 大额罚单分支优先级错误:判断条件中speed > 80的判定没有区分是否为生日场景,只要车速超过80就直接返回2,完全覆盖了生日场景下81-85速段应判定为小额罚单的规则,直接导致入参为(85, True)时错误返回2。
  2. 小额罚单分支条件未做场景隔离:60 < speed <= 80的判定对所有场景生效,生日场景下61-65速段本应属于无罚单区间,但会命中该非生日场景的小额判定规则,直接导致入参为(65, True)时错误返回1。
修正后代码

最易维护的写法是先根据是否为生日计算阈值偏移量,再按档位判定,避免条件交叉写错:

def caught_speeding(speed, is_birthday):
    offset = 5 if is_birthday else 0
    if speed <= 60 + offset:
        return 0
    elif speed <= 80 + offset:
        return 1
    else:
        return 2

验证异常用例:

  • 入参(65, True):偏移量为5,65≤60+5,返回0,符合预期
  • 入参(85, True):偏移量为5,65<85≤80+5,返回1,符合预期
  • 非生日场景偏移量为0,原有正常用例判定逻辑完全不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:36:28