如何清楚地要求用户输入并允许多种类型?

How to cleanly ask user for input and allow several types?

所以这是一个用户输入提示,它工作得很好。我正在将一些名称和关联的(基于 1 的)数字打印到控制台,供用户选择一个。我还提供了通过输入 q 退出的选项。 数字有效的条件是 a) 它是一个数字并且 b) 它小于或等于名称的数量并且大于 0.

while True:    
    number = str(input("Enter number, or q to quit. \n"))
    if number == "q":
        sys.exit()
    try:
        number = int(number)
    except:
        continue
    if number <= len(list_of_names) and number > 0:
        name = list_of_names[number-1]
        break

这段代码没有问题,只是我觉得很难读,而且不是很漂亮。由于我是 python 的新手,我想请教各位,如何更干净地编写此提示?更具体地说:我如何要求用户输入可以是字符串或整数的输入?

小写一下。

number = str(input("Enter number, or q to quit. \n"))
number = number.lower()

这将使 q 变为小写,因此如果他们按 shift 键也没有关系,如果他们按其他键,只需创建一个将 while 循环设置为 true 的 if 语句即可。

简单一点:

while True:    
    choice = str(input("Enter number, or q to quit. \n"))
    if choice.lower() == "q":
        sys.exit()
    elif choice.isdigit() and (0 < int(choice) <= len(list_of_names)):
        name = list_of_names[int(choice)-1] 
        break