Читайте!
Ваше условие (
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 == 'нет':
ЗАНОВЕС!