Сложные логические условия

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

Тренажер по Python

Часто в жизни нам приходится принимать решения на основе нескольких факторов сразу. Например, "если на улице солнечно И у меня есть свободное время, я пойду гулять". Программирование — не исключение. В этом модуле мы разберемся со сложными логическими условиями. С помощью логических операторов `and` (И), `or` (ИЛИ) и `not` (НЕ), мы научимся создавать гибкие и точные проверки. Вы сможете писать код, который проверяет, что число находится в нужном диапазоне, что пользователь имеет один из нескольких статусов, или комбинировать множество условий для принятия сложных решений. Этот тренажер поможет вам отточить навыки использования этих операторов на практических задачах.

Список тем

Проверка диапазона с помощью `and`

id: 39980_task_replace_1

Дополните код, чтобы он проверял, что возраст `age` находится в рабочем диапазоне, то есть от 18 до 65 лет включительно. Для этого нужно, чтобы ОБА условия выполнялись одновременно.

Заполните пропуски
age = 25
# Проверяем, что возраст больше или равен 18 И меньше или равен 65
if age >= 18 input1S age <= 65:
    print("Рабочий возраст")
else:
    print("Нерабочий возраст")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Проверка одного из вариантов с `or`

id: 39980_task_replace_2

Завершите условие, которое предоставляет доступ, если у пользователя роль 'admin' ИЛИ 'moderator'. В этом случае достаточно, чтобы выполнялось хотя бы одно из условий.

Заполните пропуски
role = "admin"
if role == "admin" input1S role == "moderator":
    print("Доступ с расширенными правами")
else:
    print("Обычный доступ")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сопоставьте операторы и их назначение

id: 39980_task_compare_1

В Python есть три основных логических оператора. Сопоставьте каждый оператор из правой колонки с его правильным описанием из левой колонки.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Возвращает `True`, если оба операнда истинны
Возвращает `True`, если хотя бы один из операндов истинен
Инвертирует логическое значение (True становится False и наоборот)
or
not
and
Сообщения
Проверить
Показать подсказку

Результат условия с `and`

id: 39980_task_predict_1

Проанализируйте код. Для получения специальной скидки нужно иметь и купон, и карту лояльности. Выполнится ли это условие для данного пользователя? Выберите, что выведет программа.

Выберите правильный вариант ответа
has_coupon = True
has_loyalty_card = False

if has_coupon and has_loyalty_card:
    print("Применена специальная скидка")
else:
    print("Стандартная цена")
Сообщения
Проверить
Показать подсказку

Результат условия с `or` и `not`

id: 39980_task_predict_2

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

Выберите правильный вариант ответа
is_banned = False
is_admin = False

if not is_banned or is_admin:
    print("Вход разрешен")
else:
    print("Вход запрещен")
Сообщения
Проверить
Показать подсказку

Исправьте логический оператор

id: 39980_task_error_1

В этом коде вместо логического оператора 'И' используется побитовый оператор. Хотя код может выполниться без ошибки, это семантически неверно и может привести к неожиданным результатам. Замените символ `&` на правильное ключевое слово.

Найдите ошибку и исправьте
is_authenticated = True
has_permission = True
 
if is_authenticated & has_permission:
    print("Доступ предоставлен")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Приоритет операций

id: 39980_task_bank_1

Соберите условие для отправки уведомления. Уведомление отправляется платному пользователю, если у него включены email-уведомления ИЛИ push-уведомления. Расставьте операторы и скобки из банка, чтобы логика была верной.

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

if is_paid_user input1S input2S email_notify input3S push_notify input4S:
    print("Уведомление отправлено")
and
(
or
)
not
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Предскажите результат сложного условия

id: 39980_task_give_result_1

Внимательно проанализируйте этот код, который решает, предоставлять ли кредит. Проследите за вычислением сложного логического выражения и впишите в поле ответа, что будет выведено на экран.

Что должно получиться?
age = 25
has_job = True
is_student = False
credit_score = 750

if age > 21 and (has_job or is_student) and credit_score > 600:
    print("Одобрено")
else:
    print("Отказано")
Сообщения
Проверить
Показать подсказку

Истина или Ложь?

id: 39980_task_sort_1

Каждое логическое выражение в Python в конечном счете сводится к одному из двух значений: `True` или `False`. Распределите предложенные выражения по двум категориям в зависимости от их итогового результата.

Перетяните элементы в соответствующие блоки
Вернет True
Вернет False
5 > 3 and 1 == 1
not (10 < 20)
"a" == "a" or 5 < 2
10 != 10 or 1 == 2
not False and True
True and (False or False)
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру