进入对象是不可迭代的

时间:2017-10-06 08:19:43

标签: python

我正在编写一个Python函数,希望将元组中的所有数字相加但运行后出错

def sumall(*x):

   sm=0

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

   print sm
当我输入

时,它包含到对象中是不可迭代的错误

sumall(1,2,3)

请帮帮我

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作为可迭代 - listtuple等等。

语句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