我试图在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)
在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)
数字传递给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)