int不是可迭代的python

时间:2018-08-24 18:13:41

标签: python python-3.x

我正在尝试创建Cows and Bulls游戏,但得到了TypeError: 'int' object is not iterable。这是我的代码:

import random

print('You are playing Cows and Bulls game !')

number = random.randint(1000,2000)
number = list(number)
print(number)
user_number = input('Guess a number : \n')
global cows, bulls
cows = 0
bulls = 0
user_number = list(user_number)
print(user_number)

def game():
 if user_number[0] in number:
    cows += 1
 elif user_number[1] in number:
    cows += 1
 elif user_number[2] in number:
    cows += 1
 elif user_number[3] in number:
    cows += 1
 elif user_number not in number:
    bulls += 1

game()

当我启动程序时,它会给我:

Traceback (most recent call last):
    File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\Cows and
        number = list(number)
TypeError: 'int' object is not iterable

我不知道该怎么办,请帮忙,我刚刚开始,所以可能会有一些愚蠢的错误,如果可以,请确保纠正我:) 我以为它要我把它做成字符串还是什么?

2 个答案:

答案 0 :(得分:2)

您已尝试将int转换为listint是不可迭代的,这是list()函数正常工作的要求。您可以通过将number = list(number)更改为number = list(str(number))来使代码正常工作,但是仅number = str(number)也可以工作。

答案 1 :(得分:0)

list()将可迭代(元组,字符串,集合,字典)转换为列表。可迭代对象是可以从中获取迭代器的对象,而int则不是可迭代的。

因此number = list(number)将引发TypeError异常。如果输入不是可迭代的,user_number = list(user_number)也将如此。

如果您打算生成数字并将其放入列表中,我将代码修改为:

import random

print('You are playing Cows and Bulls game !')

number = [random.randint(1000,2000)]
# also below works:
# number = list()
# number.append(random.randint(1000,2000))

print(number)

user_number[input('Guess a number : \n')]
# also below works:
# user_number = list()
# user_number.append(input('Guess a number : \n'))

global cows, bulls
cows = 0
bulls = 0
print(user_number)

def game():
 if user_number[0] in number:
    cows += 1
 elif user_number[1] in number:
    cows += 1
 elif user_number[2] in number:
    cows += 1
 elif user_number[3] in number:
    cows += 1
 elif user_number not in number:
    bulls += 1

game()
相关问题