在Python中输入布尔值的麻烦

时间:2016-11-17 01:21:10

标签: python

我正在尝试创建一个重复运行另一个函数的函数,直到用户输入" False"对于变量WhatIsLove,但无论输入WhatIsLove返回true。发生了什么事?

def DontHurtMeNoMore():
    WhatIsLove = bool(True)
    while bool(WhatIsLove) == True:
        print hexboi()
        WhatIsLove == bool(input("Would you like to run the program again? True or False: "))

2 个答案:

答案 0 :(得分:0)

问题是input返回一个字符串,字符串总是返回True

>>> bool('a')
True
>>> bool('False')
True

所以,你需要做的是:

x = input("Would you like to run the program again? True or False: ")
if x.lower() == 'True':
    WhatIsLove = True
else:
    WhatIsLove = False

答案 1 :(得分:0)

bool 没有转换"显示"值返回布尔值;它评估表达式。任何字符串都会评估为" Truthy" True 的值,但空字符串除外,您无法使用输入读取。

您需要检查字符串的实际字符。您可能还希望了解布尔值:您的检查是多余的。试试这个:

prompt = "Would you like to run the program again? True or False: "
def DontHurtMeNoMore():
    WhatIsLove = True
    while WhatIsLove:
        print hexboi()
        WhatIsLove = input(prompt) == "True"