Логические операторы (and, or, not)

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

Логические операторы `and`, `or`, `not` — это основа управления потоком выполнения любой программы. Они позволяют создавать сложные условия, объединяя простые проверки. Оператор `and` (логическое "И") требует, чтобы все условия были истинны. Оператор `or` (логическое "ИЛИ") сработает, если истинно хотя бы одно условие. А оператор `not` (логическое "НЕ") просто инвертирует результат, меняя `True` на `False` и наоборот. Эти инструменты нужны для принятия решений в коде: например, проверить, входит ли число в диапазон, имеет ли пользователь нужные права доступа или является ли день выходным. В этом тренажере мы отработаем использование каждого оператора, начиная с самых простых булевых выражений и заканчивая построением составных условий в конструкциях `if`.

Список тем

Результат работы оператора `and`

id: 39963_task_log_op_1

Оператор `and` (логическое "И") возвращает `True` только в том случае, если оба операнда (выражения слева и справа от него) истинны. Проанализируйте код и предскажите, что он выведет на экран.

Выберите правильный вариант ответа
print(True and False)
Сообщения
Проверить
Показать подсказку

Результат работы оператора `or`

id: 39963_task_log_op_2

Оператор `or` (логическое "ИЛИ") возвращает `True`, если хотя бы один из операндов истинен. Какой результат даст этот код?

Выберите правильный вариант ответа
print(False or True)
Сообщения
Проверить
Показать подсказку

Инвертирование с помощью `not`

id: 39963_task_log_op_3

Оператор `not` (логическое "НЕ") инвертирует булево значение: `True` становится `False`, а `False` — `True`. Сначала вычисляется выражение в скобках, а затем к его результату применяется `not`. Что выведет этот код?

Что должно получиться?
# Каков будет результат выполнения этого кода?
result = not (10 < 5)
print(result)
Сообщения
Проверить
Показать подсказку

Проверка входа в клуб

id: 39963_task_log_op_4

Чтобы войти в клуб, посетителю должно быть 18 лет или больше, и у него должен быть билет. Допишите условие в `if`, используя переменные `age` и `has_ticket`, чтобы программа работала правильно.

Заполните пропуски
age = 20
has_ticket = True

if age >= 18 input1S input2S:
    print("Проход разрешен.")
else:
    print("Вход воспрещен.")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправьте логическую ошибку

id: 39963_task_log_op_5

Этот код должен проверять, является ли число "неположительным", то есть нулем или отрицательным. Однако из-за ошибки в логическом операторе проверка работает неверно. Найдите и исправьте строку с ошибкой.

Найдите ошибку и исправьте
x = 0
if x < 0 and x == 0:
    print("Число неположительное.")
else:
    print("Число положительное.")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Приоритет операторов

id: 39963_task_log_op_6

В Python у оператора `and` приоритет выше, чем у `or`. Это означает, что `and` вычисляется раньше. Учитывая это правило, определите, что выведет следующий код.

Выберите правильный вариант ответа
print(False or True and False)
Сообщения
Проверить
Показать подсказку

Соберите условие для скидки

id: 39963_task_log_op_7

Скидка предоставляется, если сегодня выходной (`is_weekend`) или если у клиента есть купон (`has_coupon`). Соберите правильное условие `if` из предложенных фрагментов. Один из фрагментов лишний.

Нужно правильно расставить в пропуски предложенные варианты
is_weekend = False
has_coupon = True

if input1S input2S input3S:
    print("Скидка предоставлена!")
is_weekend
has_coupon
or
and
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Ленивые вычисления (Short-circuit)

id: 39963_task_log_op_8

Python выполняет "ленивые" вычисления для логических операторов. Оператор `or` прекращает проверку, как только находит первое истинное (`True`) значение. Что выведет этот код, учитывая эту особенность? Будет ли ошибка?

Что должно получиться?
user_name = "Admin"
result = (user_name != "") or (1 / 0 == 1)
print(result)
Сообщения
Проверить
Показать подсказку

Сложная проверка пароля

id: 39963_task_log_op_9

Надежный пароль должен быть длиннее 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("Пароль слишком простой.")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру