Python while循环实现区间整除计数 代码错误排查
练习题纠错:闭区间可整除数统计
题目要求
输入3个满足 numX ≥ numY ≥ numZ 的整数,必须使用while循环实现逻辑,统计numX到numZ闭区间内,所有可以被numY整除的整数总个数。
原代码存在的问题
- 循环遍历逻辑错误:原代码同时对x做递减、对z做递增操作,循环终止条件设为
x >= y >= z,既没有完整覆盖[numZ, numX]的整个闭区间范围,还会在区间长度奇偶性不同时出现漏数、重复遍历的问题 - 整除判断逻辑错误:原判断条件用
or同时校验x和z两个值的整除性,会导致同一个数被重复计数,甚至出现区间外数值被误统计的情况 - 遍历思路冗余:统计连续闭区间的符合条件值,不需要双向移动指针,单方向逐一枚举区间内所有值即可实现准确统计
修正后代码(满足while循环要求)
print("请输入3个整数,需满足 numX ≥ numY ≥ numZ 的规则") x = int(input("numX: ")) y = int(input("numY: ")) z = int(input("numZ: ")) # 保存原始输入值,用于最终结果输出 origin_x, origin_y, origin_z = x, y, z div_count = 0 # 从区间最小值z开始逐一遍历,直到遍历到区间最大值x current_num = z while current_num <= x: if current_num % y == 0: div_count += 1 current_num += 1 print(f"{origin_x}到{origin_z}的闭区间内,共有{div_count}个数字可以被{origin_y}整除")
逻辑说明
- 用
current_num作为遍历游标,初始值设为区间最小值z,保证遍历起点正确 - 循环终止条件设为
current_num <= x,确保闭区间内所有整数都被遍历到,不会漏数也不会超出区间范围 - 每轮循环只判断当前游标指向的单个数字是否满足整除要求,判断完成后游标加1,计数准确无重复
内容的提问来源于stack exchange,提问作者user17730718
相关产品推荐
相关产品推荐

