在下面的这段代码中,我想创建一个猜谜游戏。玩家输入4个数字,计算机告诉玩家有多少数字是正确的。但是当我运行程序时,就在我输入一个数字之后,它给了我"类型错误:类型'bool'的对象没有len(("错误。我已经阅读了此错误,但找不到任何解决方案。有什么帮助解决吗?请问如何解决?
import random
numbers = int(random.randrange(1000,9999))
nums = [int(x) for x in str(numbers)]
while True:
try:
guess = int(input('Enter your guess: '))
mynumbers = [int(k) for k in str(guess)]
i = 0
if int(guess) == int(numbers):
print('Congragulations, you have guessed the number!')
print('It took [] tries to guess')
break
else:
a = len((mynumbers) in (nums))
print ('*' * a)
i+=1
continue
except ValueError:
print('Please enter a number.')
continue
由于((mynumbers) in (nums))
将返回布尔值,因此无法调用len()
为了你想做什么
尝试:
a = sum([x in nums for x in mynumbers])
它将计算您猜对的位数。
语句
((mynumbers) in (nums))
提供 True 或 False -> 在这里你不能使用 len((-命令
编辑: 解决方案应该是这样的:
counter=0
for i in mynumbers:
if i in nums:
print i
counter+=1
print counter
计数器应该是你的结果
在你的else语句中需要一个for循环。
...
else:
number_of_rights = 0
for index in mynumbers:
if index in nums:
number_of_rights += 1
print ('*' * number_of_rights)
...