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

Python用range作字典键时区间最大值匹配返回None如何修复

问题原因
  • Python 内置的range遵循左闭右开的区间规则,range(a, b)只会包含大于等于a且小于b的整数,不会包含结束值b。你当前定义的所有区间结束值刚好是匹配失败的数值,这些值不在任何range的覆盖范围内,函数走完循环没有命中匹配就会默认返回None。
修复方案

直接调整每个range的结束值,把原结束值加1即可覆盖到边界值,修改后的完整代码如下:

def mob_attack(minimum_roll, mob_size):
    table = {
        range(1, 6): 1,  # 覆盖1-5
        range(6, 13): 2, # 覆盖6-12
        range(13, 15): 3,# 覆盖13-14
        range(15, 17): 4,# 覆盖15-16
        range(17, 19): 5 # 覆盖17-18
    }
    for key in table:
        if minimum_roll in key:
            return mob_size // table[key] # 用//直接取整数商更符合Python习惯,也避免浮点数精度问题
    # 可根据业务需要添加兜底逻辑,比如参数超出范围时报错
    raise ValueError(f"minimum_roll {minimum_roll} 不在有效范围1-18内")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:24:05