获得用户输入并做出决定

时间:2013-07-02 09:28:23

标签: python validation case

我启动我的python脚本询问用户他们想做什么?

def askUser():
    choice = input("Do you want to: \n(1) Go to stack overflow \n(2) Import from phone \n(3) Import from camcorder \n(4) Import from camcorder?");
    print ("You entered: %s " % choice);

我想:

  1. 确认用户输入的内容有效 - 从1 - 4开始的单个数字。
  2. 根据导入跳转到相应的功能。类似于switch case语句。
  3. 有关如何以pythonic方式执行此操作的任何提示?

1 个答案:

答案 0 :(得分:3)

首先,python :)中不需要分号(yay)。

使用字典。另外,要获得几乎肯定在1-4之间的输入,请使用while循环继续请求输入,直到1-4为止:

def askUser():
    while True:
        try:
            choice = int(input("Do you want to: \n(1) Go to stack overflow \n(2) Import from phone \n(3) Import from camcorder \n(4) Import from camcorder?"))
        except ValueError:
            print("Please input a number")
            continue
        if 0 < choice < 5:
            break
        else:
            print("That is not between 1 and 4! Try again:")
    print ("You entered: {} ".format(choice)) # Good to use format instead of string formatting with %
    mydict = {1:go_to_stackoverflow, 2:import_from_phone, 3:import_from_camcorder, 4:import_from_camcorder}
    mydict[choice]()

我们在这里使用try/except语句来显示输入是否不是数字。如果不是,我们使用continue从头开始启动while循环。

.get()使用您提供的输入从mydict获取值。当它返回一个函数时,我们之后放()来调用函数。