Как использовать! = Правильно войти в предложение if / else? - PullRequest
2 голосов
/ 24 марта 2019

Проблема: я пытаюсь снова вызвать ask_user (), если пользователь вводит слова! = 'Encrypt' или 'decrypt', но при правильном вводе появляется то же сообщение об ошибке.

def ask_user():
    while True:
        mode = input("Would you like to encrypt or decrypt:   ")
        if mode != 'encrypt' or mode != 'decrypt':          
            print("Please retry; you must type lowercase. \n")
            ask_user()

        else:
            message = input("Enter your message:   ")

Кажется, что использование более чем одного оператора! = В одной строке не работает, как я себе представлял:

# test to support above observ.
for n in range(4):
    if n != 2 or n != 3:
        print('me')
    else:
        print(n)

Как мне изменить код, чтобы решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 24 марта 2019

Ваша проблема в том, что вы используете or вместо and.Если вы думаете о том, как код интерпретируется:

Допустим, что mode="encrypt".Шаг за шагом:

mode != 'encrypt' оценивается как false.Пока все хорошо.

mode != 'decrypt', однако, оценивается в true.Это проблема.

Окончательное выражение, отправленное на if, будет: false or true.Наконец, это оценивается как true, что приводит к вводу блока if.

Изменение его на and означает, что оба некорректных режима должны быть проверены true для блока, который будет введен.

2 голосов
/ 24 марта 2019

n != 2 or n != 3 всегда будет верным.Если n равно 2, то это не 3.Все остальные значения не 2.

Вы намеревались n != 2 and n != 3.

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

Вам нужно использовать and, а не or. Поскольку n никогда не будет равно как 3, так и 4, оператор if, включающий or, всегда будет принимать значение True

...