Принятие нескольких вариантов ввода от пользователя - Python - PullRequest
0 голосов
/ 07 февраля 2020

Итак, я создаю калькулятор на основе ASCII и хочу учитывать пользовательские различия во входных данных (например, принимать как «Выйти» и «Выйти», так и «Выйти», а также «q» и «Q» в if / else). последовательность). Вот то, что я вроде придумал, но, возможно, есть лучший способ сделать это, потому что он будет принимать только первый тип ввода в списке.

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 кстати.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Возможно, вы хотите

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

Также было бы легче преобразовать ваш ввод в нижний регистр (используя input.lower() in quit), поэтому вам не нужно писать все варианты (например, "выход"). "," Выйти "," Выйти "... бит будет принимать" qUiT "также, если это не проблема).

0 голосов
/ 07 февраля 2020

Я бы предложил передать ожидаемые / желаемые значения какой-то функции:

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'])
...