Умовні оператори
Умовні оператори
Розгалуження — це алгоритмічна структура, у якій залежно від виконання чи невиконання деякої умови здійснюється або та, або інша послідовність дій.
Команди розгалуження — це складені команди, у яких на відміну від простих команд присутні умови, в залежності від істинності яких виконуються або не виконуються оператори, що входять до складу команди розгалуження.
Для організації розгалужень у мові Python призначені умовні оператори if, if...else, if...elif...else.
Умовний оператор if
Неповне розгалуження використовується в тому випадку, коли визначені дії тільки у разі виконання умови. Алгоритмічній конструкції «неповне розгалуження» відповідає умовний оператор if.
Оператор if призначено для виконання деякої послідовності дій у тому випадку, якщо істинною є зазначена умова.
Синтаксис оператора:
іf <умова>:
<оператори>
Оператор if перевіряє істинність зазначеної умови. Як умова використовується логічний вираз (або логічна змінна як окремий випадок логічного виразу). Умова істинна, якщо логічний вираз набуває значення True, і хибна в про тилежному випадку.
Якщо умова істинна (True), програма виконає дію, зазначену в частині <оператор>. Якщо ж умова хибна (False), то керування передається оператору, що міститься після оператора if.
Блок-схема неповного розгалуження
Приклад
Складемо програму для упорядкування введених із клавіатури значень змінних a і b так, щоб a не перевищувало b:
a, b = map(int, input().split())
if a>b: a, b = b, a
print(a, b)
Зверни увагу!
Оператори записуються з обов’язковим однаковим відступом від лівого краю. Якщо оператор лише один, його можна записати після
двокрапки в одному рядку з умовою..
Умовний оператор if...else
Повне розгалуження використовується в тому випадку, коли визначені різні дії в разі виконання та невиконання умови. Алгоритмічній конструкції «повне розгалуження» відповідає умовний оператор if...else.
Синтаксис оператора:
if <умова>:
__<оператори 1>
else:
__<оператори 2>
Якщо умова виконується, тобто має значення True, то виконується блок дій <оператори 1>. В іншому випадку виконується блок дій <оператори 2>, записаний після службового слова еlse.
Зверни увагу!
Команди, вкладені в гілки if і else, записуються з однаковим відступом.
Блок-схема повного розгалуження
Приклад
Складемо програму для перевірки, чи введені 3 числа є довжинами сторін прямокутного трикутника. Для перевірки скористаємось теоремою Піфагора:
a, b, c = map(int, input().split())
if a**2 == b**2+c**2 or b**2 == a**2+c**2 or c**2 == a**2+b**2:
print('Так')
else:
print('Ні')
Вкладені розгалуження
Під час розв’язування багатьох задач виникає необхідність при виконанні (або невиконанні) деякої умови знову робити вибір. У такій ситуації застосовують так звані вкладені розгалуження: у відповідній гілці умовного оператора знову використовують оператор іf.
Приклад:
Записати умовний оператор для обчислення значення функції:
If x < 0 Then y := x
Еlse If x <= 5 Then y := x * x
Else y := 2 * x;
Умовний оператор if...elif...else
Перевірку умови в гілці else можна записати скорочено, скориставшись ключовим словом elif (англ. else if — інакше, якщо).
Синтаксис оператора:
if <умова1>: <оператори 1>
elif <умова2>: <оператори 2>
...
elif <умова N>: <оператори N>
else: <оператори>
Інструкція if-elif-else припиняє перегляд наступних гілок, як тільки логічний вираз у поточній гілці буде True. Так, якщо вираз при if (перша гілка) буде True, то після виконання блоку <оператори 1> керування передається наступному за if-elif-else оператору. Якщо жодна з умов по гілках if-elif не є істинною, виконується блок операторів по гілці else.
Зверни увагу!
У гілці elif обов’язково повинен бути логічний вираз — умова, як у заголовку if . У кінці після всіх гілок elif може бути одна гілка else для
обробки випадків, які не відповідають умовам гілки if і всіх elif .
Блок-схема множинного розгалуження
Приклад
W = input('Введіть назву пори року: ')
if W == 'весна': print('березень, квітень, травень')
elif W == 'літо': print('червень, липень, серпень')
elif W == 'осінь': print('вересень, жовтень, листопад')
elif W == 'зима': print('грудень, січень, лютий')
else: print('неправильні дані')