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

Python创建除数对应区间倍数字典的代码错误排查求助

代码问题列表
  • 变量命名不规范,使用了list、dict这两个Python内置类型名作为自定义变量名,会覆盖内置方法引发潜在问题。
  • 所有除数共享同一个结果列表:在循环外初始化了全局的空列表,遍历所有除数时都往同一个列表里追加数据,且字典中存储的是该列表的引用,导致所有除数对应的列表值都是同一个、内容混杂了所有符合条件的数字。
  • 字典键不符合要求:遍历除数时用索引i作为字典键,而非要求的除数本身。
  • 内层循环逻辑错误:每遇到一个无法被当前除数整除的数字,就直接把字典对应的键值设为空列表,会覆盖之前已经存入的符合条件的数字。
修正后的代码
def create_divisors_dict(divisors, lower, upper):
    res_dict = {}
    # 直接遍历每个除数,不需要用索引
    for divisor in divisors:
        # 每个除数单独初始化一个空列表存储匹配结果
        match_list = []
        for num in range(lower, upper + 1):
            if num % divisor == 0:
                match_list.append(num)
        # 遍历完当前除数的所有区间数字后,再存入字典
        res_dict[divisor] = match_list
    return res_dict

print(create_divisors_dict([1, 2, 5], 2, 4))

运行后输出结果和预期完全一致:

{1: [2, 3, 4], 2: [2, 4], 5: []}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:42:00