【问题标题】:How to resolve my while-loop never stopping?如何解决我的while循环永不停止?
【发布时间】:2020-06-23 21:15:29
【问题描述】:

我刚刚开始编写代码,并且一直在练习 Project Euler 中的一些基本数学问题。我只是在 Jupyter 笔记本中编写这些程序。我只在question 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)。

【问题讨论】:

  • if quo == 0: i =+ 1 & while i &lt; 11: i 总是小于 11,所以循环永远不会停止。
  • 明确一点,i =+ 1 表示将i 设置为(正)1。如果你想增加i,你需要+=,而不是=+

标签: python jupyter


【解决方案1】:

我认为该程序从未运行过,但稍作改动可能会:

 if quo == 0: i += 1

编辑:实际上,要解决此类问题,要么使用调试器,要么将打印语句放入代码中。这里:观察变量inquo。尝试提前了解每个步骤。

所以我这样做了,发现虽然quo 为零,但i 并没有增加。这会立即解决您对 i=+1 错误的关注。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 2016-09-02
    • 2010-09-26
    • 2013-09-11
    • 2023-01-10
    相关资源
    最近更新 更多