Логіка виконуваної програми може бути складніша, ніж вибір однієї з двох гілок. Наприклад, залежно від значення тієї чи іншої змінної, може виконуватися одна з трьох (або більше) гілок програми.
Як організувати таке множинне розгалуження? Напевно, можна використовувати декілька інструкцій if: спочатку перевіряється умовний вираз у першій інструкції if (якщо він True, то буде виконуватися вкладений в неї блок коду), потім у другій інструкції if і т.д. Однак при такому підході перевірка наступних інструкцій буде продовжуватися навіть тоді, коли перша умова була True, і блок коду при даній гілці був виконаний. Перевірка наступних умов може виявитися безглуздою.
Зазвичай таку проблему можна вирішити за допомогою вкладених конструкцій if-else. Однак при цьому часто з’являється проблема правильного трактування коду: незрозуміло, до якого if відноситься else (хоча в Python така плутанина не можлива через обов’язкові відступи).
З іншого боку, в ряді мов програмування, в тому числі і Python, передбачено спеціальне розширення інструкції if, що дозволяє направити потік виконання програми з одній гілок. Дана розширена інструкція, крім необов’язкової частини else, містить ряд гілок elif (скорочення від “else if” – “ще якщо”) і виглядає приблизно так, як показано на блок-схемі. Частин elif може бути як завгодно багато (в межах розумного, звичайно).

На відміну від використання безлічі одиночних інструкцій if, інструкція if-elif-else припиняє перегляд наступних гілок, як тільки логічне вираз в поточній гілці буде True. Наприклад, якщо вираз при if (перша гілка) буде True, то після виконання вкладеного блоку виразів, програма повернеться до основної гілки.
Приклади скриптів з використанням інструкції if-elif-else на мові програмування Python:
x = 10
if x > 0:
print(1)
elif x < 0:
print(1)
else:
print(0)
Або такий приклад:
result = "no result"
num1 = 3
if num1 == 0:
result = 0
elif num1 == 1:
result = 1
elif num1 == 2:
result = 2
elif num1 == 3:
result = 3
elif num1 == 4:
result = 4
elif num1 == 5:
result = 45
else:
print("Error")
print(result )
У який момент припинитися виконання інструкції if-elif-else у вищевказаному прикладі? При якому значенні змінної могла спрацювати гілка else?