Python:Int不可迭代的错误

The*_*rty 5 python

我试图在Project Euler上用python弄湿我的脚,但是我遇到了第一个问题的问题(找到3或5的倍数之和到1000).我可以成功打印出三个和五个的倍数,但是当我尝试包含sum函数时,我得到以下错误:

TypeError:'int'对象不可迭代

任何帮助,将不胜感激.

n = 100
p = 0
while p<n:
   p = p + 1
x = range(0, p)

# check to see if numbers are divisable by 3 or 5
def numcheck(x): 
   for numbers in x:
      if numbers%3==0 and numbers%5==0:
          sum(numbers)
numcheck(x)
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 7

在for循环中

for numbers in x:
Run Code Online (Sandbox Code Playgroud)

对于每次循环,"数字"逐步遍历x中的元素.将变量命名为"number"可能更好,因为您一次只能得到一个数字.每次循环时,"数字"等于整数.

sum(numbers)
Run Code Online (Sandbox Code Playgroud)

抛出一个TypeError,因为函数sum()需要一个可迭代对象(比如一个数字列表),而不只是一个整数.

所以也许尝试:

def numcheck(x):
    s=0
    for number in x:
        if number%3==0 and number%5==0:
            s+=number
    print(s)
numcheck(range(1000))
Run Code Online (Sandbox Code Playgroud)


Ste*_*yle 5

数字传递给sum()时需要是一个列表或类似的数字.在上面的代码示例中,它是一个整数 - 来自x的整数之一.

尝试类似的东西:

numbers = [num for num in x if num%3==0 and num%5 ==0]
print sum(numbers)
Run Code Online (Sandbox Code Playgroud)