Задать вопрос
  • Условие if и оператор or?

    MaKvc
    @MaKvc
    Отчаянный веб-разработчик
    Читайте!
    Ваше условие (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 == 'нет':

    ЗАНОВЕС!
    Ответ написан
    Комментировать