没有int的“'int'对象是不可迭代的”

时间:2018-12-13 10:46:30

标签: python-3.x

我需要做什么: 给定一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标。 示例:

给出数字= [2,7,11,15],目标= 9,

因为nums [0] + nums [1] = 2 + 7 = 9, 返回[0,1]

我做了什么:

class Solution:
    def twoSum(self,nums,target):
        count=0
        i=0
        j=0
        item=0
        result=[]
        self.n=nums
        self.t=target
        count=len(self.n)
        for i in range(0,count):
            for item in range(0,count):
                print(i)
                print(item)
                j=self.n[i]+self.n[item]
                if j==self.t:
                    result=[i,item]
                else:
                    result=0
                    return result            
a = [3,2,4]
b = 6
c=Solution()
print (list(c.twoSum(a,b)))

结果:

0
0
0
1
Traceback (most recent call last):
  File "test-1213--Twosum-调试1.py", line 24, in <module>
    print (list(c.twoSum(a,b)))
TypeError: 'int' object is not iterable

1 个答案:

答案 0 :(得分:0)

这里的问题是结果并不总是一个列表,在第一个实例中您有result = [i,item],在其他情况下:您将它作为整数返回,而该整数在python中不是可迭代的对象。将您的代码更改为此,它应该可以工作:

class Solution:
    def twoSum(self,nums,target):
        count=0
        i=0
        j=0
        item=0
        result=[]
        self.n=nums
        self.t=target
        count=len(self.n)
        for i in range(0,count):
            for item in range(0,count):
                print(i)
                print(item)
                j=self.n[i]+self.n[item]
                if j==self.t:
                    result=[i,item]
                else:
                    result=[0]
                    return result            
a = [3,2,4]
b = 6
c=Solution()
print(type(c.twoSum(a,b)))
print (list(c.twoSum(a,b)))

在将result=0行更改为result=[0]之前,在添加列表指示符后,print(type(c.twoSum(a,b)))的输出为<class 'int'>,这就是您所需要的<class 'list'>希望收到您的print (list(c.twoSum(a,b)))对帐单。