Python 我的推理哪里错了?

Python 我的推理哪里错了?,python,Python,我是Python编程的绝对初学者,这是我在Project Euler中的第一个程序(问题1) Euler项目中的问题1询问: 如果我们列出10以下的所有自然数,它们是3或3的倍数 5,我们得到3,5,6和9。这些倍数之和是23 求1000以下所有3或5的倍数之和 我觉得我的推理在某个地方是错误的,但我不知道在哪里或为什么?我得到266333 i=0 s=0 j=0 r=0 while i<1000: s=s+i i=i+3 while j<1000: r=r+j

我是Python编程的绝对初学者,这是我在Project Euler中的第一个程序(问题1)

Euler项目中的问题1询问:

如果我们列出10以下的所有自然数,它们是3或3的倍数 5,我们得到3,5,6和9。这些倍数之和是23

求1000以下所有3或5的倍数之和

我觉得我的推理在某个地方是错误的,但我不知道在哪里或为什么?我得到266333

i=0
s=0
j=0
r=0

while i<1000:
  s=s+i
  i=i+3

while j<1000:
  r=r+j
  j=j+5
print("sum=",s+r)    
i=0
s=0
j=0
r=0

而我你在两次添加一些数字。例如,15是3和5的倍数,但不应添加两次

我会用模做一些更简单的事情,而且只有一个循环

示例(尚未测试):

x=0
y=0
而x问题是:

1000
下方找到
3
5
的所有倍数之和

在这里,您需要做的就是循环遍历下面的数字
1000
,如果该数字可以被
3
i%3==0
)或
5
i%5==0
)整除,则将其附加到列表
multiples
,并打印
multiples
sum(multiples)
)的所有元素之和

更简化的代码:

print sum([i for i in range(1000) if i % 3 == 0 or i % 5 == 0])
# 233168

你能解释一下你的问题是什么吗?你的问题必须是独立的。
multiples = []

for i in range(1000):
    if i % 3 == 0 or i % 5 == 0:
        multiples.append(i)

print sum(multiples)
# 233168
print sum([i for i in range(1000) if i % 3 == 0 or i % 5 == 0])
# 233168