Python统计满足3个条件的数字数量代码输出为0问题求解
Python代码错误排查:find_numbers函数输出异常问题
核心错误点梳理
- 语法&缩进错误:Python依赖缩进区分代码块,原代码中函数定义内部逻辑、
if/else分支下的代码全部没有正确缩进,属于语法错误,实际运行会直接抛出IndentationError。 number_contains函数实现完全缺失:当前函数直接返回bool类对象,未实现「判断x的数位是否包含m」的逻辑;且调用该函数时没有传入x和m两个必填参数,属于参数传递错误。- 循环终止逻辑完全错误:原代码在两个分支都加了
break:- 遇到第一个不能被
f整除的数时,直接终止整个循环 - 遇到能被
f整除但不包含m的数时,也直接终止整个循环
传入参数为3、5、100时,第一个遍历的数是1,1%3 !=0,直接触发break,循环直接结束,结果自然为0。
- 遇到第一个不能被
- 冗余错误:往结果列表
z追加值时,写的是z.append("x"),追加的是固定字符串"x"而非当前遍历的变量x,虽然当前场景统计长度不受影响,但逻辑完全错误。
修正后可运行代码
def number_contains(x, m): # 把x和m都转成字符串,判断数位是否包含 return str(m) in str(x) def find_numbers(f, m, n): z = [] for x in range(1, n+1): # 同时满足两个条件才加入列表(范围限制已经由range保证) if x % f == 0 and number_contains(x, m): z.append(x) return len(z) print(find_numbers(3,5,100)) # 输出为6,符合预期
内容的提问来源于stack exchange,提问作者Jesse Lorenz
相关产品推荐
相关产品推荐

