python中的用户输入布尔值

时间:2018-02-15 22:38:39

标签: python python-3.x input boolean

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

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)

10 个答案:

答案 0 :(得分:4)

尝试将您的输入转换为%>% filter(QTY == 0)不会像这样工作。 Python认为任何非空字符串ADate ItemID QTY <date> <int> <int> 1 2011-08-03 23028 0 2 2011-08-04 23028 0 3 2011-08-05 23028 0 4 2011-08-06 23028 0 5 2011-08-07 23028 0 6 2011-08-08 23028 0 7 2011-08-09 23028 0 8 2011-10-29 10007 0 9 2011-10-30 10007 0 10 2011-10-31 10007 0 11 2011-11-01 10007 0 12 2011-11-02 10007 0 。因此boolTrue基本相同。即使输入不是bool(input()),两者都返回true。只需将直接给出的输入与字符串input() != ''"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 ,则上述代码将失败(通过返回None而不是布尔值)。如果原始输入无效(即不是"True"False"),请考虑返回默认值或re-asking the user for input

答案 1 :(得分:3)

在您的使用中,将string转换为bool将无法解决问题。在Python中,如果将字符串转换为bool,例如:bool("False")布尔值将为True,这是因为如果将非空字符串转换为bool,它将始终转换为True,但如果您尝试将空字符串转换为布尔值,则会获得False

要解决您的问题,必须进行一些更改。 首先,您的代码示例甚至不会调用您询问用户是否喜欢辛辣食物的功能,因此请在代码的最底部调用它。 likes_spicyfood()

您必须更改的第二件事是,您必须让用户在代码中输入TrueFalse,而不是转换为价值从stringbool,只需点击string并将其与'True''False'进行比较,以下是完整代码:

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。 以下是converting a string to a bool

的更多信息

答案 2 :(得分:3)

如果你确定输入是正确的,你可以这样做:

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

答案 3 :(得分:1)

不要将输入视为布尔。稍后制作检查是 True 还是 False

的条件

像这样:)

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)

答案 4 :(得分:0)

尝试一下。在0和1中询问答案,然后将其转换为布尔值。就像我在下面的示例中所做的一样

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

答案 5 :(得分:0)

正如克里斯汀·迪恩(Christian Dean)指出的那样,对于任何非空输入,bool(input())都将返回True。如果您确实需要使用布尔型,则可以通过以下方式强制使用:

def likes_spicyfood():
    spicyfood = input("Do you like spicy food? True or False?")
    if(spicyfood=="True"):
        spicyfood_Bool = True
    elif(spicyfood=="False"):
        spicyfood_Bool = False
    if(spicyfood_Bool):
        print("True")
    elif(!spicyfood_Bool):
        print("False")

    return(likes_spicyfood)

这是一种解决方法,将输入字符串“转换”为布尔值(spicyfood_Bool)。不必说此解决方案过于复杂,但是如果您确实需要布尔值,它将确实有用。

答案 6 :(得分:0)

您可以简单地使用此

wsman.AuthenticationMechanism = AuthenticationMechanism.Default;

答案 7 :(得分:0)

spicyfood = bool(input("Do you like spicy food? t/f?")=='t')

答案 8 :(得分:0)

首先,我们需要在用户阅读问题后阅读用户的输入:

pg_restore --verbose --data-only --disable-triggers --no-acl --no-owner -h localhost -U user_name -d database_name latest.dump

现在我们将其响应保存在变量hungry = input("Are you hungry? True or False \n") 中,我们可以在某些语句中使用它了:

hungry

注意使用if hungry.lower() == "true": ,它将使用其字符串,而不考虑字母的大写形式,并将其全部转换为小写。这意味着,无论他们输入.lower()"True"还是"tRue",与小写字母"TRUE"相比,他们都将得出True

执行此操作时重要的是,也始终将比较字符串也设置为小写。因为如果您尝试针对"true"评估"true",它将返回"True"

利用这些知识,我们可以将所有知识放在一起并打印出我们想要的内容:

False

答案 9 :(得分:0)

您还可以将模块“ast”与“literal_eval”-方法一起使用。像这样:

import ast

bool = ast.literal_eval(input("True or False?"))