【问题标题】:I couldn't find any solutions for my TypeError: object of type 'bool' has no len() error我找不到 TypeError 的任何解决方案:'bool' 类型的对象没有 len() 错误
【发布时间】:2019-02-08 07:17:27
【问题描述】:

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

【问题讨论】:

  • 你想用len((mynumbers) in (nums))做什么?你期望它返回什么?
  • 我希望它返回一个数字,显示有多少数字被猜对了。例如:假设随机数是“1234”,我们输入“3456”,我希望它返回(2)并打印“**”
  • 你认为len((mynumbers) in (nums))会做这些事情的原因是什么?
  • 我以为它会搜索每个号码。但我错过了它是一个提供 True 或 False 的函数。我仍然不知道该怎么做。

标签: python python-3.x error-handling


【解决方案1】:

你的 else 语句中需要一个 for 循环。

...

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

...

【讨论】:

    【解决方案2】:

    声明

    ((mynumbers) in (nums))
    

    提供 True 或 False -> 在这里你不能使用 len()-command

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

    counter=0
    for i in mynumbers:
         if i in nums:
             print i
             counter+=1
    print counter
    

    计数器应该是你的结果

    【讨论】:

    • 谢谢,我完全错过了。我怎样才能做我想做的事?
    【解决方案3】:

    由于((mynumbers) in (nums)) 将返回布尔值,因此无法调用len()

    为了你想做的事

    试试:

    a = sum([x in nums for x in mynumbers])

    它会计算你猜对的位数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多