如何在python中输入用户的真/假输入?

How to have user true/false input in python?

我是Python的新手。

我想让节目问一下

1
"is Johnny hungry? True or false?"

用户输入为真然后打印为"Johnny needs to eat."

用户输入错误然后打印"Johnny is full."

我知道要加一个输入法

1
johnnyHungry = int(input("Is johnny hungry"))

但我希望他们输入真/假,而不是int。


你可以使用一个简单的助手来强制你想要的任何输入。

1
2
3
4
5
6
7
8
def get_bool(prompt):
    while True:
        try:
           return {"true":True,"false":False}[input(prompt).lower()]
        except KeyError:
           print"Invalid input please enter True or False!"

print get_bool("Is Jonny Hungry?")

你可以把这个应用到任何东西上

1
2
3
4
5
6
def get_int(prompt):
    while True:
        try:
           return int(input(prompt))
        except ValueError:
           print"Thats not an integer silly!"


你可以用bool把东西变成TrueFalse

1
2
3
4
5
6
>>> bool(0)
False
>>> bool("True")
True
>>> bool("")
False

但是用户输入"true"或"false"时存在问题,假设我们可以将string转换为bool:

1
2
>>> bool("False")
True

这是因为如果一个string不是空的,它被认为是真实的。

通常,我们所做的是允许用户输入可能的输入的某个子集,然后告诉用户,如果用户输入其他值,则只允许这些值:

1
2
3
4
5
6
7
user_answer = input("Is johnny hungry").lower().strip()
if user_answer =="true":
    # do something
elif user_answer =="false":
    # do something else
else:
    print("Error: Answer must be True or False")


1
2
3
johnnyHungry = input("Is johnny hungry")
if johnnyHungry =="True":
...

我希望你能从那里拿过来?


1
2
3
4
5
6
7
8
9
10
11
12
13
def get_bool(prompt):
while True:
    try:
        return {"si": True,"no": False}[input(prompt).lower()]
    except KeyError:
        print ("Invalido ingresa por favor si o no!")

    respuesta = get_bool("Quieres correr este programa: si o no")

if (respuesta == True):
    x = 0
else:
    x = 2

您可以尝试bool(input("…"),但如果用户不输入bool,则会遇到麻烦。你可以用try语句来包装它。