Логические операторы `and`, `or`, `not` — это основа управления потоком выполнения любой программы. Они позволяют создавать сложные условия, объединяя простые проверки. Оператор `and` (логическое "И") требует, чтобы все условия были истинны. Оператор `or` (логическое "ИЛИ") сработает, если истинно хотя бы одно условие. А оператор `not` (логическое "НЕ") просто инвертирует результат, меняя `True` на `False` и наоборот. Эти инструменты нужны для принятия решений в коде: например, проверить, входит ли число в диапазон, имеет ли пользователь нужные права доступа или является ли день выходным. В этом тренажере мы отработаем использование каждого оператора, начиная с самых простых булевых выражений и заканчивая построением составных условий в конструкциях `if`.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Результат работы оператора `and`
Оператор `and` (логическое "И") возвращает `True` только в том случае, если оба операнда (выражения слева и справа от него) истинны. Проанализируйте код и предскажите, что он выведет на экран.
print(True and False)Результат работы оператора `or`
Оператор `or` (логическое "ИЛИ") возвращает `True`, если хотя бы один из операндов истинен. Какой результат даст этот код?
print(False or True)Инвертирование с помощью `not`
Оператор `not` (логическое "НЕ") инвертирует булево значение: `True` становится `False`, а `False` — `True`. Сначала вычисляется выражение в скобках, а затем к его результату применяется `not`. Что выведет этот код?
# Каков будет результат выполнения этого кода?
result = not (10 < 5)
print(result)Проверка входа в клуб
Чтобы войти в клуб, посетителю должно быть 18 лет или больше, и у него должен быть билет. Допишите условие в `if`, используя переменные `age` и `has_ticket`, чтобы программа работала правильно.
age = 20
has_ticket = True
if age >= 18 input1S input2S:
print("Проход разрешен.")
else:
print("Вход воспрещен.")Исправьте логическую ошибку
Этот код должен проверять, является ли число "неположительным", то есть нулем или отрицательным. Однако из-за ошибки в логическом операторе проверка работает неверно. Найдите и исправьте строку с ошибкой.
x = 0if x < 0 and x == 0: print("Число неположительное.")else: print("Число положительное.")Приоритет операторов
В Python у оператора `and` приоритет выше, чем у `or`. Это означает, что `and` вычисляется раньше. Учитывая это правило, определите, что выведет следующий код.
print(False or True and False)Соберите условие для скидки
Скидка предоставляется, если сегодня выходной (`is_weekend`) или если у клиента есть купон (`has_coupon`). Соберите правильное условие `if` из предложенных фрагментов. Один из фрагментов лишний.
is_weekend = False
has_coupon = True
if input1S input2S input3S:
print("Скидка предоставлена!")Ленивые вычисления (Short-circuit)
Python выполняет "ленивые" вычисления для логических операторов. Оператор `or` прекращает проверку, как только находит первое истинное (`True`) значение. Что выведет этот код, учитывая эту особенность? Будет ли ошибка?
user_name = "Admin"
result = (user_name != "") or (1 / 0 == 1)
print(result)Сложная проверка пароля
Надежный пароль должен быть длиннее 8 символов и при этом содержать хотя бы одну цифру. Дополните код, чтобы он правильно проверял пароль `password`. Используйте функцию `any()` и генераторное выражение для проверки наличия цифр.
password = "mysecret123"
is_long = len(password) > 8
has_digit = any(c.isdigit() for c in password)
if is_long input1S input2S:
print("Пароль надежный.")
else:
print("Пароль слишком простой.")