Python使用if、while求120约数代码未达要求问题咨询
问题背景
本次任务要求使用Python的if条件判断、while循环完成带条件的约数查找:查找整数120的所有约数,打印全部约数并统计约数总个数。
提交的实现代码
div_n = 1 count = 0 n = 120 while div_n <= n: if n % div_n == 0: print(div_n) count += 1 div_n += 1 print('number of divisor that 120 is {}.'.format(count))
代码运行输出
1 2 3 4 5 6 8 10 12 15 20 24 30 40 60 120 number of divisor that 120 is 16
问题排查结论
- 代码的计算逻辑没有错误:遍历1到120的整数,通过取模运算判断是否为约数,最终统计得到16个约数,和120的真实约数集合完全一致,不存在计算结果错误。
- 判题系统不通过基本都是非逻辑类原因导致,常见情况如下:
- 输出字符串不匹配:多数OJ类判题系统会对输出内容做精确匹配,当前代码最后的统计语句存在语法表述问题,
number of divisor that 120 is {}是不规范的英文表达,常规表述应为The number of divisors of 120 is {},如果题目指定了输出文案,当前写法会直接被判错。 - 未满足隐含效率要求:如果题目要求优化遍历逻辑(约数成对出现,仅需遍历到√n即可得到全部约数),当前从1遍历到120的O(n)写法虽然结果正确,但不符合效率约束,也会触发判题失败。
- 代码规范不符合要求:如果题目对变量命名、缩进格式、注释有明确要求,当前代码未满足对应规范时也可能判定不通过。
- 输出字符串不匹配:多数OJ类判题系统会对输出内容做精确匹配,当前代码最后的统计语句存在语法表述问题,
内容的提问来源于stack exchange,提问作者umad
相关产品推荐
相关产品推荐

