首页 > 解决方案 > 如何解决我的while循环永不停止?

问题描述

我刚刚开始编码,并且一直在练习 Project Euler 的一些基本数学问题。我只是在 Jupyter 笔记本中编写这些程序。我只在问题 5上,一个非常基本的提示和一个非常基本的答案,并且由于某种原因,实际运行代码并获得输出变得越来越困难。这是我试图运行的代码:

nums = []
for n in range(1, 30000):
    i = 1
    while i < 11:
        quo = n % i
        if quo != 0: break
        if quo == 0: i =+ 1
        if i == 10 and quo == 0: nums.append(n)
print(nums)

当我运行它时,程序永远不会停止运行,因此永远不会给我输出。我认为它与代码没有任何关系,因为我之前运行过它并且它有效。我也尝试在 Spyder 中运行它,但遇到了同样的问题。这是我的电脑问题,还是我运行代码的方式问题?

对于上下文,这是我正在处理的欧拉提示:

“2520 是可以被 1 到 10 的每个数字整除而没有余数的最小数字。能被 1 到 20 的所有数字整除的最小正数是多少?”

上面的代码只是试图重现示例结果(返回 2520)。

标签: pythonjupyter

解决方案


我认为该程序从未起作用,但稍作改动可能会:

 if quo == 0: i += 1

编辑:实际上,要解决此类问题,请使用调试器或将打印语句放入代码中。这里:观察变量i和。尝试预先了解每一步。nquo

所以我这样做了,看到虽然quo为零,i但没有增加。这会立即让您的注意力集中在该i=+1错误上。


推荐阅读