Оператор Python if с пользовательским вводом (input ()) не работает (Python 3.7) - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь создать меню здесь.Меню позволяет пользователю вводить параметры.Существует также функция проверки, позволяющая проверить, была ли опция, введенная пользователем, действительной или нет.

def menu():
    while True:
        display_menu()
        user_input = validate("Choose Option")
        if user_input == 1:
            pass

        elif user_input == 2:
            exit()


def display_menu():
    print("1) Application")
    print("2) Quit Application")


def validate1(q):
    user_input = input(q)
    if len(user_input) == 0:
        return False

    elif user_input != "1" or user_input != "2":    # Error is likely here
        print("Invalid option, please choose another option")
        return False

    else:
        return user_input

При запуске этого кода вы получаете:

1) Application
2) Quit Application
Choose Option 

Однако после ввода 1, функция проверки считает, что ввод 1 недействителен, и вы получаете:

Invalid option, please choose another option
1) Application
2) Quit Application
Choose Option 

Это не должно иметь место, поскольку 1 должно быть допустимым.Сначала я подумал, что это была ошибка относительно типа переменной user_input, и я попытался изменить ее (из строки 22):

elif user_input != 1 or user_input != 2:

Однако ошибка все еще сохраняется.

В чем здесь ошибка?

1 Ответ

0 голосов
/ 19 марта 2019

elif user_input! = "1" или user_input! = "2":

позволяет предположить, что ваш пользовательский ввод равен "1", тогда это утверждение будет истинным, поскольку user_input (1) не равноto (2)

Поэтому вам нужно изменить это утверждение на что-то вроде этого:

def validate(q):
    user_input = input(q)
    if len(user_input) == 0:
        return False

    if user_input == str(1) or user_input == str(2):    # Valid Options
        return user_input
    else:
        print("Invalid option, please choose another option")
        return False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...