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

实现筛选n1或n2倍数的函数触发AssertionError,求排查修正

问题排查与代码修正

问题分析

  • 逻辑判断错误:需求是筛选n1或n2的倍数,但代码中误用了and运算符,这只会保留同时是n1和n2公倍数的元素,完全不符合需求。
  • 类型不匹配问题:当输入nums是numpy数组时,遍历得到的元素是numpy.int64类型,直接存入列表后与普通整数列表比较会导致断言失败。

修正后的代码

def exercise_3(nums, n1, n2): 
    multiples = []
    for i in nums:
        # 替换and为or,满足"是n1或n2倍数"的条件
        if i % n1 == 0 or i % n2 == 0:
            # 转换为原生int类型,避免numpy类型与普通int比较不相等的问题
            multiples.append(int(i))
    return multiples

验证结果

修正后重新运行测试用例:

  • 调用exercise_3(np.arange(20), 3, 4)会返回[3, 4, 6, 8, 9, 12, 15, 16, 18],与断言预期完全一致。
  • 第二个测试用例exercise_3(np.arange(300), 17, 27)的返回结果也将匹配给定的预期列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:15:43