Несколько вариантов
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. Правила сохранены как учебное отображение строк.