项目欧拉 - 练习1

时间:2016-02-09 06:57:13

标签: python sum range

我试图找到所有小于1000的数字的总和除以3和5.我到目前为止有这个:

for i in range(0, 1000):
    if i % 3 == 0:
        print i
    elif i % 5 == 0:
        print i
b = sum(i)
print b

我得到TypeError: 'int' object is not iterable(指b = sum(i)

3 个答案:

答案 0 :(得分:-1)

您可以尝试这样的事情:

# initially we declare a variable that will hold the current sum
# and at the end of the for it will hold 
# the sum of the numbers you have mentioned.
b = 0
for i in range(1000):
    # Then whether i is evenly divided by 3 or 5 
    # we add this number to the current sum
    if i % 3 == 0 or i % 5 == 0:
        b += i

# last we print the sum
print b

答案 1 :(得分:-1)

使用以下行

sum将可迭代对象作为输入。列表,集合等是可迭代的。

请尝试以下

b = sum(i for i in range(1000) if i%3 == 0 or i%5 == 0)

答案 2 :(得分:-1)

从你的代码中我想你需要可以被3 or 5整除的数字之和。在所有解决方案中,另一种可能的单线解决方案是:

print(sum(filter(lambda x: x%3==0 or x%5==0, range(1000))))

这里得到这个TypeError,因为sum函数接受一系列数字并返回序列的总和。在您的代码中,您将i作为sum的参数传递,在大多数情况下,这是int类型对象。所以你得到了这个错误。