Бувають задачі, для розв’язання яких недостатньо лінійних конструкцій. Команди повинні виконуватись лише при певному значенні конкретної умови. Для розв’язування таких задач використовують алгоритмічну структуру розгалуження.
В алгоритмах з розгалуженням використовується оператор if. Його застосування має кілька форм.
if <логічний вираз>:
<блок команд>
Важливо! У програмі, написаній мовою Python, кожен рядок у блоці має на початку відступ. Зазвичай відступ утворюють натисканням клавіші Tab. У мові Python табуляція та пробіли мають значення!
age = 20
if age > 18:
print('You are an adult')
Результат: You are an adult
Спершу змінній age присвоюється значення 20. У наступному рядку службове слово if оголошує про початок алгоритмічної конструкції розгалуження, у якій перевіряється умова age > 18. У наступному рядку після табуляції розміщується команда print, яка виводить на екран повідомлення "You are an adult". Очевидно, що 20 > 18, тому це повідомлення буде виведено.
Якщо змінити в умові знак нерівності на протилежний, тобто age < 18, то повідомлення не виведеться на екран, бо при підстановці змінної age умова стала б хибною.
Якщо потрібно виконати команду при хибній умові, використовую повну форму розгалуження.
if <логічний вираз>:
<блок команд 1>
else:
<блок команд 2>
age = 17
if age > 18:
print('You are an adult')
else:
print('You are not an adult')
Результат: You are not an adult
Даний приклад відрізняється від попереднього тим, що зв'явилось службове слово else. Після нього розміщуються команди, які потрібно виконати в разі хибності умови, що перевіряється. Підставивши значення змінної age в умову, отримаємо хибний логічний вираз 17 > 18. Тому виконається команда після слова else і на екрані з'явиться повідомлення "You are not an adult".
Після обов'язкової частини зі словом if у конструкції розгалуження далі можуть слідувати необов'язкові частини з elif (скорочено від else if — інакше якщо), тобто можна розширити функцію if ключовим словом elif.
age = 20
if age > 18:
print('You are more than 18')
elif age < 18:
print('You are less than 18')
else:
print('You are 18')
Результат: You are more than 18
У прикладі перевіряються дві умови age > 18 та age < 18 за допомогою if та elif.
Усередині умовних інструкцій можна використовувати будь-які інструкції мови Python, в тому числі і умовну інструкцію. Отримуємо вкладене розгалуження. При цьому вкладені блоки мають більший розмір відступу (наприклад, 8 пробілів чи двічі натиснута клавіша Tab).
Розглянемо приклад програми з вкладеною віткою розгалуження. Потрібно з трьох різних введених чисел знайти добуток двох більших з них.
a = float(input('a = ')) # вводимо числа
b = float(input('b = '))
c = float(input('c = '))
if a < b and a < c: # якщо друге та третє числа одночасно більші за перше, то шукаємо їх добуток
print(b * c)
else: # якщо не виконується хоча б один із логічних виразів, порівнюємо числа-"претенденти" між собою
if b < c: # вкладена вітка if!
print(a * c) # якщо умова істинна, то шукаємо добуток більшого числа з першим числом
else: # інакше — шукаємо добуток першого та другого чисел
print(a * b)