我是编码的新手,我发现这个网站真有帮助。所以我一直试图解决这个问题而且我得到了错误的结果,所以如果你能帮助我,我将非常感激。
问题:求出低于1000的所有3或5的倍数之和。(例如,如果我们列出10以下的所有正整数,即3或5的倍数,我们得到3,5,6和9,总和是23.) 我的代码:
count = 0
count1 = 0
for x in range(1000):
if x % 5 == 0:
count = count + x
if x % 3 == 0:
count1 = count1 + x
print count1 + count
我做错了什么?
提前致谢!
答案 0 :(得分:4)
您希望代码中有elif
,因此您不会计算相同的x
两次,但更简单的方法是将or
与count
个变量一起使用:
count = 0
for x in range(1000):
if x % 5 == 0 or x % 3 == 0:
count += x
可以使用sum
完成:
print(sum(x for x in range(3, 1000) if not x % 5 or not x % 3))
为了完整性,使用您自己的代码的工作版本:
count = 0
count1 = 0
for x in range(1000):
if x % 5 == 0:
count += x
elif x % 3 == 0:
count1 += x
print count1 + count
总是评估 if
;因此,例如,当x
为15时,它可以被5和3整除,因此您只计算15次,elif
仅在前一个if
/ elif
时进行评估评估结果为False
,因此使用elif
只会将一次x
添加到总计中。
答案 1 :(得分:0)
10以下没有数字是5和3的倍数。但是在1000以下有几个数字正好被3和5分开(15,45 ......)。
所以你需要:
count=0
for x in range(1000):
if x % 5 == 0 or x % 3 == 0:
count=count + x
print count