python - 如何解决我的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)。
解决方案
我认为该程序从未起作用,但稍作改动可能会:
if quo == 0: i += 1
编辑:实际上,要解决此类问题,请使用调试器或将打印语句放入代码中。这里:观察变量i
和。尝试预先了解每一步。n
quo
所以我这样做了,看到虽然quo
为零,i
但没有增加。这会立即让您的注意力集中在该i=+1
错误上。
推荐阅读
- php - PHP获取带有值的数组键
- react-native - React 本机动画与 Android 崩溃
- vb.net - 为 sql where 语句存储列表框中的选定项目
- javascript - 渲染动态创建的 React 组件
- javascript - 更新控制 html 的变量时无法读取未定义错误的属性“添加”
- neural-network - 反向传播和递归神经网络是否相同?
- hive - 无法在 hive 中使用 escapeChar 作为 '\r\n"
- android - AlarmManager 设置为在 AM 时间触发 PM
- c++ - Visual Studio:MSB307 错误以代码 1 退出
- c++ - 编译时验证类型擦除