next(h)TypeError:“ int”对象不是迭代器

时间:2018-08-17 16:35:13

标签: python

此块代码给了我这个错误'TypeError:'int'对象不是迭代器'。我找不到问题,因为我有一个几乎相同的程序,可以正常工作。

else:
     v3=r
     for h in range(0,len(oddnums)):

         if v1+v2+v3+v4==totalvals:
             temp=[v1,v2,v3,v4]
             combinations.append(temp)
         else:
           next(h)
           print()

这里是完整的源代码:        全局奇数        全局温度        全球合并        整体组合        全球账户        全球总数        全球性        全局v4

 for i in range (0 ,len(oddnums)):
     v1=oddnums[i]
     if i>=totalvals:
         next(i)
         print()
     else:
         print("v1")
#print(v1)
     for x in range (0,len(oddnums)):
         v2=oddnums[x]
         print('v2')
         total=x+i
         if total >=totalvals:
          next(x)
         print()
     else:
      rem=totalvals-(x+i)
     if rem<4:
         next(x)
         print()
     else:
         print()

     for r in range (0,len(oddnums)):

         #print('v3')
         count += 1
         #print(count)

         lrem = rem - oddnums[r]
         if lrem<1:
            next(r)
            print('no val')
         else:
             v3=r
             for h in range(0,len(oddnums)):

                 if v1+v2+v3+v4==totalvals:
                     temp=[v1,v2,v3,v4]
                     combinations.append(temp)
                 else:
                   next(h)
                   print()
 my_method()

完整错误消息:

回溯(最近通话最近): 你好   文件“ C:/ Users / willf / Documents / Transition Task / question1 / src / com / companyBoolean / 4waycombo.py”,第92行,在 v1     my_method() v2

文件“ C:/ Users / willf / Documents / Transition Task / question1 / src / com / companyBoolean / 4waycombo.py”,第84行,在my_method中     下一个(h) TypeError:“ int”对象不是迭代器

以退出代码1完成的过程

2 个答案:

答案 0 :(得分:4)

问题是尝试使用next(i)next(x)ixrange迭代器产生的整数,而不是迭代器本身。

将这些行更改为continue,就可以了。

答案 1 :(得分:1)

问题在这里:

 else:
     next(h)
     print()

next()获取 iterator 的下一项。由于h是int,因此无法对其进行迭代。

您不需要在for循环中使用next(),因为for循环无需其他代码即可进行迭代(每次循环运行时,h都会增加)。