Avatar ·

Неправильно работает сравнение переменной с несколькими значениями через or

📁 python, пример

"

У меня возникла проблема с оператором if и его под функцией or. При работе с str выглядит это примерно так

if a==""ноль"" or ""нулевой"":    print(0)elif a==""один"" or ""единичный"":    print(1)# выводит лишь 0 при любых значениях a

Что мне делать и как это исправить?

"

Avatar ·

Многие начинающие программисты думают, что если написать

if a==""ноль"" or ""нулевой"":

то а будет сравниваться поочередно с обеими частями - как с ""ноль"", так и с ""нулевой"".

if a==""ноль"" или if a == ""нулевой"":

На самом деле исходная строчка не что иное, как

if (a==""ноль"") or (""нулевой""):

Поэтому сравнение будет только одно: a == ""ноль"". Вторая часть (""нулевой"") просто оценивается на логический результат, который в данном случае всегда True (). А раз True, то выполнение всегда переходит к следующей строчке print (0) независимо от значения а.

Иными словами, строчка if a==""ноль"" or ""нулевой"" эквивалентна строчке if ""нулевой"". А т.к. результат такого выражения всегда True, то и эта строчка не нужна. Исходя из вышесказанного, все ваши четыре строчки эквивалентны одной:

print(0)

Именно это у вас и происходит.

Войдите чтобы оставить ответ

Блоги