【发布时间】:2021-03-01 06:24:47
【问题描述】:
我有一些代码可以给出我想要的答案,但是一旦我得到了我就无法停止它 我想要的答案。
这是我的代码:
multiples = range(1,10)
n = 1
while n>0:
for i in multiples:
if n%i!=0:
n = n + 1
continue
elif n%10==0:
print(n)
这是解决 Project Euler 的problem 5 的尝试。本质上,我应该得到给定范围内所有数字的最小倍数。
现在,当我使用给出的示例运行上述代码时(1-10 应该产生 2520 作为最小倍数),我得到了正确的答案。但是,代码会继续无限运行并打印答案而不会中断。另外,当我像这样将 break 语句添加到末尾时:
multiples = range(1,10)
n = 1
while n>0:
for i in multiples:
if n%i!=0:
n = n + 1
continue
elif n%10==0:
print(n)
break
代码只是不断向数字 30 发送垃圾邮件。任何想法为什么会发生这种情况。作为记录,我并不是真的在寻找这个问题的替代解决方案(毕竟目标是学习),但这些都是受欢迎的。我最想知道的是我哪里出错了。
【问题讨论】:
-
你有嵌套循环。您只是打破了内部循环,而外部循环无限期地运行而没有满足中断条件。你可以用这个来解决它:stackoverflow.com/questions/189645/…
标签: python computation