Ваша проблема в том, что вы используете or
вместо and
.Если вы думаете о том, как код интерпретируется:
Допустим, что mode="encrypt"
.Шаг за шагом:
mode != 'encrypt'
оценивается как false
.Пока все хорошо.
mode != 'decrypt'
, однако, оценивается в true
.Это проблема.
Окончательное выражение, отправленное на if
, будет: false or true
.Наконец, это оценивается как true
, что приводит к вводу блока if
.
Изменение его на and
означает, что оба некорректных режима должны быть проверены true
для блока, который будет введен.