如何用for循环查找n1到n2间的偶数,函数报AssertionError如何解决
even_numbers函数触发AssertionError的原因
- 函数无显式返回值:当前逻辑仅将符合条件的偶数打印到控制台,没有返回任何有效结果,Python中无显式return的函数默认返回
None,None和目标列表[-2, 0, 2]判断相等自然触发断言错误。 - 函数内部硬编码覆盖了输入参数:函数第一行
(n1, n2) = [-2, 4]直接覆盖了外部传入的参数,无论传入什么值,函数都只会使用固定的[-2,4]计算,完全失去了参数的作用。 - 未收集计算结果:当前逻辑仅逐个打印偶数,没有将符合条件的数值存入列表,即使添加return语句也没有可返回的结果对象。
修复后的代码
def even_numbers(n1, n2): result = [] # 直接使用传入的参数,不做硬编码覆盖 # range左闭右开,此处结束值为n2符合断言预期的不含4的结果,若需要包含n2则改为n2+1 for num in range(n1, n2): if num % 2 == 0: result.append(num) # 显式返回结果列表 return result assert even_numbers(-2, 4) == [-2, 0, 2]
内容的提问来源于stack exchange,提问作者Hemanth
相关产品推荐
相关产品推荐

