Каскадні інструкції розгалуження.
При написанні програми не рекомендується використовувати багаторазово вкладені одна в одну інструкції розгалуження – програма стає громіздкою і її важко читати. Вважається, що число рівнів вкладення не повинно перевищувати двох-трьох. Однак на практиці часто зустрічаються задачі, в яких необхідно перевіряти досить багато умов і, в залежності від результату перевірки, виконувати ті чи інші дії.
В мові Python передбачений спрощений запис для виконання таких вкладених перевірок. Для їх реалізації використовується каскадна інструкція розгалуження if-elif-else, яка має вигляд:
- if логічний_вираз_1:
- блок інструкцій_1
- elif логічний_вираз_2:
- блок_інструкцій_2
- elif логічний_вираз_3:
- блок_інструкцій_3
- …
- else:
- блок_інструкцій_N
Інструкція виконується наступним чином. Обчислюється значення логічного_виразу_1. Якщо значення логічного_виразу_1 істинне (True), то виконується блок_інструкцій_1, після чого програма переходить до виконання першої інструкції наступного фрагмента алгоритму. Якщо ж значення логічного_виразу_1 хибне (False), то відбувається перехід до обчислення значення логічного_виразу _2. Якщо значення логічного_виразу_2 істинне, то виконується блок_інструкцій_2 і так далі. Блок_інструкцій_N виконується лише в тому випадку, коли жодний з логічних виразів не був істинним.
Присутність в каскадній інструкції розгалуження елемента else – не обов’язкова.
Якщо жодний з логічних виразів не був істинним, а конструкція else опущена, то відбувається перехід до наступної інструкції, що стоїть після каскадної інструкції розгалуження.
Приклад: Скласти програму, яка в залежності від зазначеного номера дня тижня виводить його назву.
- num_day = int(input('Введіть номер дня тижня = '))
- if num_day == 1:
- print('Понеділок')
- elif num_day == 2:
- print('Вівторок')
- elif num_day == 3:
- print('Середа')
- elif num_day == 4:
- print('Четвер')
- elif num_day == 5:
- print('П’ятниця')
- elif num_day == 6:
- print('Субота')
- elif num_day == 7:
- print('Неділя')
- else:
- print('Такого дня не існує')