无法完成数学项目

时间:2016-05-05 21:49:22

标签: python-2.7

我是编码的新手,我发现这个网站真有帮助。所以我一直试图解决这个问题而且我得到了错误的结果,所以如果你能帮助我,我将非常感激。

问题:求出低于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 

我做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:4)

您希望代码中有elif,因此您不会计算相同的x两次,但更简单的方法是将orcount个变量一起使用:

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