2017-10-06 146 views
-1

我写的Python的功能想总结的所有元组的数量,但it.s得到跑错后进入对象不是可迭代

def sumall(*x): 

    sm=0 

    for i in len (x): 
     sm= x[i] + sm 

    print sm 

It.s包含到对象不是可迭代的错误当我输入

sumall(1,2,3)

请帮我

+0

'对于i在x'会做的 – schwobaseggl

+1

可能的复制[int对象不是可迭代?](https://stackoverflow.com/questions/1938227/int-object-is-not-iterable) –

回答

3
def sumall(x): 
    return sum(x) 

sumall((1, 2, 3)) 
0

由于PyDev的回答,有一个内置的sum方法,它完全符合你的要求。所以,你最好使用它。但是,如果你锻炼这样的代码,你有几个问题

def sumall(*x): 
    sm=0 
         .<---- there shouldn't be space between len and (x) and range is required 
    for i in range(len(x)): 
     sm= x[i] + sm <---- this can be converted to sm += x[i] which appends 

    print sm 

len是返回一个int这是不迭代。另一方面是range

0

你的问题是,for x in l语法如下l视为可迭代 - listtuple

声明len(x)返回一个整数,这是不以任何方式的迭代。

您应该简单地循环使用x

def sumall(*x): 
    sm=0 

    for item in x: 
     sm= item + sm 

    print sm 

然而,在情况下,当你(站立着的时候在一次循环超过两个iterables如)需要循环通过索引可以使用range(),它返回数的清单(从0到指定的号码)你可以循环。

def sumall(*x): 
    sm=0 

    for i in range(len(x)): 
     sm= x[i] + sm 

    print sm