python中的用户输入布尔值

use*_*453 1 python boolean input python-3.x

我正在尝试让用户输入他们是否喜欢辛辣食物,并且输出应该是布尔值,但是我的以下代码似乎没有输出:

def likes_spicyfood():
    spicyfood = bool(input("Do you like spicy food? True or False?"))
    if spicyfood == ("True"):
        print("True")
    if spicyfood == ("False"):
        print("False")
        return(likes_spicyfood)
Run Code Online (Sandbox Code Playgroud)

小智 11

把事情简单化:

isSure = input('Are you sure? (y/n): ').lower().strip() == 'y'
Run Code Online (Sandbox Code Playgroud)
  • 结果总是bool
  • 大写字母被忽略;
  • True仅当它包含y并且可能包含一些空格时;
  • 其他一切都等于False


Chr*_*ean 7

尝试将您的输入转换为bool那样无法正常工作。Python考虑任何非空字符串True。因此,做事bool(input())与做事基本相同input() != ''。即使输入不是,两者都返回true "True"。只是比较直接给出字符串输入"True"False"

def likes_spicyfood():
    spicyfood = input("Do you like spicy food? True or False?")
    if spicyfood == "True":
        return True
    if spicyfood == "False":
        return False
Run Code Online (Sandbox Code Playgroud)

请注意,None如果输入不是"Trueor ,则上面的代码将失败(通过返回而不是布尔值)"False"。如果原始输入无效(即不是或),请考虑返回默认值或重新询问用户输入"True"False"