【发布时间】:2018-06-06 12:58:16
【问题描述】:
不太熟悉while循环,但我认为它是一种替代方法,所以这可能是一个基本错误。
我需要查找 1000 以下的自然数之和,即 3 和 5 的倍数。例如 10 以下
multiples of 3 and 5 < 10 = 3,5,6,9
sum = 23
我使用 for 循环的代码如下(这是我最初的解决方案):
def multiple():
lst = []
for x in range(334): #didn't know how else to use a for loop but to find the largest value of x using a calculator
if 3*x < limit:
lst.append(3*x)
if 5*x< 1000:
lst.append(5*x)
if (3*x > 1000) and (5*x > 1000): #unnecessary in a forloop with a range but this is just to maintain symmetry with while loop
break
lst2 = list(set(lst)) #remove duplicates
print(sum(lst2))
multiple()
我的代码使用了一个while循环(这个解决方案甚至没有出现在控制台中——>也许这就是错误所在):
def multiple():
lst = []
while True:
x = 1
if 3*x < 1000:
lst.append(3*x)
if 5*x< 1000:
lst.append(5*x)
if (3*x > 1000) and (5*x > 1000):
break
x += 1
lst2 = list(set(lst)) #remove duplicates
print(sum(lst2))
multiple()
期望的输出:
233168
除了如何纠正 while 循环之外,我的 for 循环或 while 循环的任何改进也将受到欢迎。谢谢
【问题讨论】:
-
所以它是3的倍数或 5?
-
3 和 5 的倍数如果不清楚@KlausD。
-
尝试在循环之后打印
x的值,然后从那里开始工作。 (另外,我认为循环到 1000 并选择x % 3或x % 5为零的值会更好。) -
那么最小的数字是 15。
-
我认为存在误解,我展示的示例是针对 10 岁以下的。但我正在寻找 1000 以下的 3 的倍数和 5 的倍数的总和,而不是公倍数。抱歉,我认为这就是误解所在
标签: python python-3.x loops for-loop while-loop