我找不到任何针对我的类型错误的解决方案:类型为"bool"的对象没有len()错误



在下面的这段代码中,我想创建一个猜谜游戏。玩家输入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)
...

相关内容

最新更新