DamiRocK

Python: цепочка elif в учебном переключателе цветов

Возвращаем строки действий для green, yellow, red и неизвестного цвета. Проверяем порядок ветвей, регистр и обязательный ответ по умолчанию.

Несколько вариантов

Elif добавляет следующую проверку к цепочке if. Условия рассматриваются по порядку, и выполняется первая подходящая ветвь. Else задаёт поведение, если ни одно условие не подошло.

Задание источника

По цвету нужно вернуть строку действия: green — Go!, yellow — Slow down!, red — Stop!, любое другое значение — Unknown color.

Это условный словарь учебной программы, не формулировка правил дорожного движения.

def get_traffic_light_action(color: str) -> str:
    if color == "green":
        return "Go!"
    elif color == "yellow":
        return "Slow down!"
    elif color == "red":
        return "Stop!"
    else:
        return "Unknown color"

Проверка всех ветвей

Нужно вызвать функцию хотя бы с четырьмя значениями: green, yellow, red и, например, blue. Последний пример проверяет ветвь по умолчанию, а не одну из основных трёх.

Строка "Green" не равна "green" и в текущей реализации даст Unknown color. Исходное условие не требует регистронезависимой обработки; автоматически добавлять lower было бы расширением поведения.

Не путать независимые if с цепочкой

Несколько самостоятельных if могут выполнить несколько блоков, если условия совместимы. Цепочка if–elif–else выбирает только одну ветвь. В данном примере проверки равенства трём разным строкам и так несовместны, но сама конструкция делает намерение выбора явным.

Полнота результата

Благодаря else функция возвращает строку для любого переданного строкового значения. Без него неизвестный цвет мог бы привести к неявному None. Формат возвращаемых сообщений, включая восклицательные знаки и регистр, сохранён из задания.

Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Правила сохранены как учебное отображение строк.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.