TypeError:'int'对象不可迭代(python的新内容)

时间:2018-01-08 14:28:48

标签: python

我是python的新手,无法弄清楚为什么我的代码会抛出这个错误。我正在尝试使用c来比较两个列表。

def playPowerball():
    powerball = []
    choices = []
    c = []
    while len(powerball) < 6:
        number = random.randint(1,64)
        if number not in powerball:
            powerball.append(number)
    while len(choices) < 6:
        pick = int(raw_input('Pick a number between 1 and 64: '))
        if pick not in choices:
            choices.append(pick)
    for i in powerball:
        for i in choices:
            c += 1
    print ('You have',c,'correct',powerball,choices)

错误:

U:\Python\Lottery Ticket.py in playPowerball()
     15             choices.append(pick)
     16     for i in powerball:
---> 17         if i in choices:
     18             c += 1
     19     print ('You have',c,'correct',powerball,choices)

TypeError: argument of type 'int' is not iterable 

编辑:我的意思是选择而不是选择,但代码仍然不起作用。

编辑2:谢谢你,sKwa,解决了我的问题!

2 个答案:

答案 0 :(得分:0)

错误很明显:pick是一个int。语法for i in *someInt*在python中不是有效的语法。

因为你写了这一行:

   pick = int(raw_input('Pick a number between 1 and 64: '))

然后,您使用.... in pick

想象一下,选择值是5

for i in 5if i in 5实际应该做什么?

答案 1 :(得分:-1)

您正在尝试迭代无效的整数。你的问题在这里: 您已指定选择数据类型“整数”,但尝试迭代它,就像它是一个列表一样。

 for i in powerball:
        for i in pick:
            c += 1

 for i in powerball:
---> 17         if i in pick:
     18             c += 1

我认为您希望检查所选号码是否在强力球中?

您将第17行更改为:

if pick == i