2017-10-06 2 views
-1

ich eine Funktion von Python schreibe möchte all die Zahl in einem Tupel summieren, aber it.s erhält falsch nach Laufeist nicht iterable

def sumall(*x): 

    sm=0 

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

    print sm 

It.s in Objekt enthält nicht iterable Fehler sind wenn ich Eingang

SumAll (1,2,3)

Bitte helfen Sie mir

+0

'für i in x' wird – schwobaseggl

+1

Mögliche Duplikat tun [int-Objekt nicht Iterable?] (Https://stackoverflow.com/questions/1938227/int-object-is-not-iterable) –

Antwort

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

sumall((1, 2, 3)) 
0

Als pydev beantwortet, Es gibt eine integrierte sum Methode, die genau das tut, was Sie gefragt haben. Also, du solltest es besser benutzen. Aber wenn Sie diesen Code tun für Bewegung, haben Sie einige Probleme

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 ist ein int Rückkehr, die nicht iterable ist. range auf der anderen Seite tut.

0

Ihr Problem ist, dass die Syntax von for x in ll als iterable nimmt - list, tuple usw.

Die Anweisung len(x) gibt eine Ganzzahl, die keineswegs eine iterable ist.

Sie sollten einfach Schleife über x.

def sumall(*x): 
    sm=0 

    for item in x: 
     sm= item + sm 

    print sm 

in Fällen Wenn Sie jedoch durch den Index in einer Schleife benötigen (zB bei your'e über zwei Iterables auf einmal Looping) Sie range() verwenden können, die eine Liste von Zahlen zurück (von 0 auf die angegebene Anzahl) können Sie die Schleife durchlaufen.

def sumall(*x): 
    sm=0 

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

    print sm 
Verwandte Themen