2017-10-06 141 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