【问题标题】:Into object is not iterable进入对象是不可迭代的
【发布时间】:2017-10-06 08:19:42
【问题描述】:

我正在编写一个 Python 函数,想对元组中的所有数字求和,但运行后出错

def sumall(*x):

   sm=0

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

   print sm

当我输入时,它包含在对象中是不可迭代的错误

总和 (1,2,3)

请帮帮我

【问题讨论】:

标签: python


【解决方案1】:
def sumall(x):
   return sum(x)

sumall((1, 2, 3))

【讨论】:

    【解决方案2】:

    正如 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 可以。

    【讨论】:

      【解决方案3】:

      您的问题是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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-05
        • 2018-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多