Читайте!
Ваше условие (
if a == 'нет' or 'да':
) работает следующим образом:
Python проверяет,
a
равно
'нет'
, естественно
а
неравно
'нет'
,
а
содержит строку
'1111'
, НО ПОТОМ идет
OR
, операнд справа - это строка
'да'
, естественно Python считает ее за истину
true
, она ведь непустая!
Получается, это условие, эквивалентно
if a == 'нет' or true:
, а это значит, что
print('ok')
выполнится в любом случае, так как, в условии есть часть
or true
,Pythony плевать на
a == 'нет'
, он видит
OR
, видит
true
и выполняет условие, проще говоря, можно выкинуть лишнее, и записать так:
if true:
- это, все также эквивалентно
if a == 'нет' or 'да':
Для большего понимания происходящего, попробуйте заменить
if a == 'нет' or 'да':
на
if a == 'нет' or '':
. В этом случае, пустая строка эквивалентна
false
и при этом,
a
неравно
'нет'
, а это значит, что условие не будет выполнено и вы не увидите
print('ok')
.
Правильное условие:
if a == 'да':
print('ok')
elif a == 'нет':
print('net')
else:
print('error')
В случае с
or, правильно будет так:
if a == 'да' or a == 'нет':
ЗАНОВЕС!