How to have user true/false input in python?
我是Python的新手。
我想让节目问一下
1 | "is Johnny hungry? True or false?" |
用户输入为真然后打印为
用户输入错误然后打印
我知道要加一个输入法
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!" |
你可以用
1 2 3 4 5 6 | >>> bool(0) False >>> bool("True") True >>> bool("") False |
但是用户输入"true"或"false"时存在问题,假设我们可以将
1 2 | >>> bool("False") True |
这是因为如果一个
通常,我们所做的是允许用户输入可能的输入的某个子集,然后告诉用户,如果用户输入其他值,则只允许这些值:
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语句来包装它。