我正在尝试创建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
我不知道该怎么办,请帮忙,我刚刚开始,所以可能会有一些愚蠢的错误,如果可以,请确保纠正我:) 我以为它要我把它做成字符串还是什么?
答案 0 :(得分:2)
您已尝试将int
转换为list
。 int
是不可迭代的,这是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()