Python 如何干净地请求用户输入并允许多种类型?

Python 如何干净地请求用户输入并允许多种类型?,python,python-3.x,coding-style,code-cleanup,Python,Python 3.x,Coding Style,Code Cleanup,因此,这是一个提示用户输入,它工作得很好。我正在将一些名字和相关的(基于1的)号码打印到控制台,以便用户选择一个。我还可以通过输入q来选择退出。 数字有效的条件是a)它是一个数字,b)它小于或等于名称的数量,并且大于0 while True: number = str(input("Enter number, or q to quit. \n")) if number == "q": sys.exit() try: number =

因此,这是一个提示用户输入,它工作得很好。我正在将一些名字和相关的(基于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
为True时:
number=str(输入(“输入数字,或q退出。\n”))
如果数字==“q”:
sys.exit()
尝试:
数字=整数(数字)
除:
持续
如果编号为0:
名称=名称列表[编号1]
打破
这段代码没有问题,只是我觉得它很难阅读,也不是很漂亮。由于我是python新手,我想问你们,如何更清晰地编写这个提示符?更具体地说:如何要求用户输入字符串或整数

把它放下

number = str(input("Enter number, or q to quit. \n"))
number = number.lower()
这将使q的大小写变低,因此,如果他们按下shift键,则无所谓。如果他们按下其他键,则只需编写一条if语句,将while循环设置为true。

稍微简单一点:

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
为True时:
choice=str(输入(“输入数字,或q退出。\n”))
如果选择.lower()=“q”:
sys.exit()

elif choice.isdigit()和(0else
最终使用
或多个
,除了
s。另外,
如果范围内的数字(…)
。并且不要认为输入已经返回了字符串。
如果范围内的数字.isdigit()和int(数字)(len(名称列表)):
@StevenRumbalski这并没有真正的帮助,因为在对列表进行索引时,您必须再次将输入转换为整数,并且数字是基于1的。这可能属于on。@Rawing:我不确定您的反对意见是基于性能还是优雅。如果性能真的不重要,那么这是可行的。您正在避免尝试/除了部分,我喜欢。:)