我正在编写一个Python函数,希望将元组中的所有数字相加但运行后出错
def sumall(*x):
sm=0
for i in len (x):
sm= x[i] + sm
print sm
当我输入时,它包含到对象中是不可迭代的错误
sumall(1,2,3)
请帮帮我
答案 0 :(得分:3)
def sumall(x):
return sum(x)
sumall((1, 2, 3))
答案 1 :(得分:0)
正如pydev回答的那样,有一种内置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
,这是不可迭代的。另一方面,{{1}}确实如此。
答案 2 :(得分:0)
您的问题是for x in l
的语法将l
作为可迭代 - list
,tuple
等等。
语句len(x)
返回一个整数,它绝不是可迭代的。
您应该简单地遍历x
。
def sumall(*x):
sm=0
for item in x:
sm= item + sm
print sm
但是,如果您确实需要按索引循环(例如,当您一次循环两次迭代时),您可以使用range()
,它返回一个数字列表(从0到指定的数字)你可以循环。
def sumall(*x):
sm=0
for i in range(len(x)):
sm= x[i] + sm
print sm