python中的用户输入布尔值

User input boolean in python

我试图让用户输入他们是否喜欢辛辣的食物,输出应该是一个布尔值,但我似乎没有得到下面代码的输出:

1
2
3
4
5
6
7
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)


尝试将您的输入转换为bool不会像这样工作。python考虑任何非空字符串True。因此,执行bool(input())基本上与执行input() != ''相同。即使输入不是"True",两者都返回true。只需将直接给出的输入与字符串"True"False"进行比较:

1
2
3
4
5
6
def likes_spicyfood():
    spicyfood = input("Do you like spicy food? True or False?")
    if spicyfood =="True":
        return True
    if spicyfood =="False":
        return False

注意,如果输入不是"True"False",上述代码将失败(返回None而不是布尔值)。如果原始输入无效(即不是"True"False"),请考虑返回默认值或重新要求用户输入。


如果您确定输入正确,可以执行以下操作:

1
2
3
def likes_spicyfood():
    spicyfood = input("Do you like spicy food? True or False?")
    return spicyfood.title() =="True"


在您的使用中,将string转换为bool将不是一个有效的解决方案。在Python中,如果将字符串转换为bool,例如:bool("False"),布尔值将为True,这是因为如果将非空字符串转换为bool,它将始终转换为True,但如果尝试将空字符串转换为bool,则会得到False

为了解决你的问题,必须做一些改变。首先,您的代码示例甚至不调用您询问用户是否喜欢辛辣食物的函数,所以在代码的最底层调用它。埃多克斯1〔18〕

第二件事你必须改变的是,你必须简单地使用用户类型TrueFalse,就像你在代码中使用的那样,但是不要将值从string转换为bool,只需取string并将其与'True''False'进行比较,这里是完整的代码:

1
2
3
4
5
6
7
8
9
def likes_spicyfood():
    spicyfood = input("Do you like spicy food? True or False?")
    if spicyfood =="True":
        print("The user likes spicy food!")
    if spicyfood =="False":
        print("The user hates spicy food!")
    return likes_spicyfood

likes_spicyfood()

您还将看到我返回了一些多余的括号:当将输入值与'True''False'进行比较时,以及在重新执行likes_spicyfood时。下面介绍如何将字符串转换为bool


试试这个。在0和1中要求答案,然后将其转换为布尔值。就像我在下面的例子中所做的那样

1
2
3
isTrue = True
while isTrue:
  isTrue = bool(int(input("Continue? 1 for yes, 0 for no:")))

不要将输入转换为bool。以后再做一个检查它是真是假的条件

像这样:)

1
2
3
4
5
6
7
8
9
def likes_spicyfood():
spicyfood = input("Do you like spicy food? True or False?")
while spicyfood!="True" or"False":
    spicyfood=input("Do you like spicy food? True or False?")
if spicyfood == ("True"):
    print("True")
if spicyfood == ("False"):
    print("False")
    return(likes_spicyfood)