Бувають задачі, для розв’язання яких недостатньо лінійних конструкцій. Команди повинні виконуватись лише при певному значенні конкретної умови. Для розв’язування таких задач використовують алгоритмічну структуру розгалуження.
В алгоритмах з розгалуженням використовується оператор if. Його застосування має кілька форм.
if <логічний вираз>: <блок команд>Важливо! У програмі, написаній мовою Python, кожен рядок у блоці має на початку відступ. Зазвичай відступ утворюють натисканням клавіші Tab. У мові Python табуляція та пробіли мають значення!
age = 20if 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 = 17if 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 = 20if 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)