【问题标题】:Accepting multiple variations of input from user - Python接受用户输入的多种变体 - Python
【发布时间】:2020-05-23 06:27:49
【问题描述】:

所以我正在构建一个基于 ASCII 的计算器,并且我想考虑用户输入的变化(例如在 if/else 中同时接受“Quit”和“quit”以及“QUIT”和“q”和“Q”顺序)。这是我想出的,但可能有更好的方法,因为它只会采用列出的第一个输入类型。

elif input == ("j" or "J" or "linear" or "Linear" or "quadratic" or "Quadratic" or "linear and 
quadratic" or "Linear and Quadratic" or "Linear and quadratic" or "linear and quadratic" or "LINEAR 
AND QUADRATIC"):

在这种情况下,如果使用任何其他输入变体,序列将只接受“j”并抛出我的 else 错误消息。关于更好的方法来做到这一点的任何想法?我使用 python 3 顺便说一句。

【问题讨论】:

标签: python-3.x input ascii calculator variations


【解决方案1】:

我建议将预期/期望值传递给某种函数:

def get_input(message, desired_values, is_int=False):
    user_input = input(message)
    if user_input in desired_values:
        return user_input if not is_int else int(user_input)
    else:
        return get_input("Wrong input, possible inputs: {}: ".format(
            ", ".join(desired_values)), desired_values, is_int)

input = get_input("type", ['v1', 'v2'])

【讨论】:

    【解决方案2】:

    你可能想要

    quit = {"q", "quit", ...}
    if input in quit:
        # actually quit
    

    此外,将您的输入转换为小写(使用input.lower() in quit)可能会更容易,因此您不需要编写所有变体(例如“quit”、“Quit”、“QUIT”...如果这不是问题,它也会接受“qUiT”)。

    【讨论】:

    • 这实际上会通过将其设置为小写来简化很多菜单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2014-04-07
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多