Оператор if-else обрабатывает две стороны одного и того же условия: True и False. Это работает очень хорошо, если мы работаем с проблемой, которая имеет только два результата.
Однако в программировании не всегда вопрос может иметь однозначный ответ:True или False и может иметь множество вариантов решений в зависимости от указанных условий.
Вот тут и пригодится оператор if-elif-else. Это наиболее полный условный оператор, поскольку он позволяет нам легко создавать несколько условий.
Конструкция elif означает else if ("иначе если"), указывая на то, что если предыдущее условие не выполняется, проверяем следующее.
Блоки if и else останутся прежними. Оператор elif находится между ними.
Давайте напишем оператор if-elif-else, который проверяет состояние светофора и генерирует соответствующий ответ:
light = "Red"
if light == "Green":
print("Go")
elif light == "Yellow":
print("Caution")
elif light == "Red":
print("Stop")
else:
print("Incorrect light signal")
Теперь наш условный оператор обслуживает все возможные значения переменной light.
У нас может быть столько elif, сколько нам нужно, пока они находятся между if и else.
Примечание. Оператор if-elif может существовать сам по себе без блока else в конце. Однако elif не может существовать без предшествующего ему оператора if (что естественно имеет смысл).
Давайте рассмотрим фрагмент кода, который проверяет, находится ли значение целого числа в диапазоне от 0 до 9, и печатает слово на английском языке:
num = 5
if num == 0:
print("Zero")
elif num == 1:
print("One")
elif num == 2:
print("Two")
elif num == 3:
print("Three")
elif num == 4:
print("Four")
elif num == 5:
print("Five")
elif num == 6:
print("Six")
elif num == 7:
print("Seven")
elif num == 8:
print("Eight")
elif num == 9:
print("Nine")
Важно помнить, что оператор if-elif-else или if-elif — это не то же самое, что несколько операторов if. Операторы if действуют независимо.
Если условия двух последовательных if истинны, будут выполнены оба оператора.
С другой стороны, в if-elif-else, когда условие оценивается как True, остальные условия оператора не оцениваются.