Python 我不能';我找不到任何类型错误的解决方案:类型为';布尔';没有len()错误

Python 我不能';我找不到任何类型错误的解决方案:类型为';布尔';没有len()错误,python,python-3.x,error-handling,Python,Python 3.x,Error Handling,在下面的代码中,我想创建一个猜谜游戏。玩家输入4个数字,电脑告诉玩家有多少数字是正确的。但当我运行程序时,输入一个数字后,它会给我“TypeError:类型为'bool'的对象没有len()”错误。我已经读到这个错误,但我找不到任何解决方案。有什么可以解决的吗?请问如何解决 import random numbers = int(random.randrange(1000,9999)) nums = [int(x) for x in str(numbers)] while True:

在下面的代码中,我想创建一个猜谜游戏。玩家输入4个数字,电脑告诉玩家有多少数字是正确的。但当我运行程序时,输入一个数字后,它会给我“TypeError:类型为'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))
传递True或False->此处不能使用len()-命令

编辑: 解决方案应该是这样的:

counter=0
for i in mynumbers:
     if i in nums:
         print i
         counter+=1
print counter
计数器应该是您的结果,因为
((nums)中的(mynumbers))
将返回布尔值,因此无法调用
len()

为了你想做的事

试试看:

a=sum([x单位为nums,x单位为mynumber])


它将计算您正确猜测的位数。

您需要在else语句中使用for循环

...

else:
    number_of_rights = 0
    for index in mynumbers:
        if index in nums:
            number_of_rights += 1
    print ('*' * number_of_rights)

...

你想用(nums)中的
len((mynumbers))做什么
?你希望它返回什么?我希望它返回一个数字,显示有多少数字被猜测为真。例如:假设随机数是“1234”,我们输入“3456”,我希望它返回(2)并打印“**”,你怎么会认为
len((mynumes)in(nums))
会做这些事情呢?我以为它会搜索每个数字。但我忽略了它是一个传递真或假的函数。我还是不知道怎么做。谢谢你,我完全错过了。我怎样才能做我想做的事?