Умовний оператор if у Python. Синтаксис, блоки else/elif, приклади

У процесі навчання програмуванню часто доводиться створювати програми, які не так просто застосувати в реальному житті. Адже час від часу доводиться виконувати інструкції лише за певних умов. Щоб мати можливість реалізувати це в програмі, усі мови мають керуючі оператори. З їх допомогою можна контролювати потік виконання коду, створюючи цикли або виконуючи певні дії тільки при виконанні певної умови.

Сьогодні ми поговоримо про оператор if, який перевіряє поточну ситуацію на певну умову і на основі цієї інформації приймає рішення про подальші дії.

Типи контрольних заяв

Загалом, якщо це не єдиний оператор, який керує потоком програми. А також він сам може бути компонентом більшого ланцюжка операторів.

Є також цикли та оператори, які керують процесом його виконання. Сьогодні мова піде лише про умовний оператор і ланцюжки, в яких він може брати участь.

У програмуванні є таке поняття як розгалуження. Саме це означає послідовність команд, яка виконується лише за умови виконання певної умови. Самі критерії можуть бути різними:

  1. Рівність змінної певному значенню.
  2. Виконання певної дії.
  3. Стан програми (згорнуто чи ні).

Спектр може бути значно більшим. Умовні оператори бувають кількох типів:

  1. З однією гілкою. Тобто проводиться одноразова перевірка, в результаті якої виконуються певні дії.
  2. З двома і більше гілками. Якщо критерій 1 вірний, то перевірте критерій 2. Якщо він вірний, то перевірте 3. І тому виконайте стільки перевірок, скільки потрібно.
  3. З кількома умовами. Тут все просто. Інтерпретатор перевіряє кілька умов або одну з них.

якщо заява

Структура оператора if подібна в усіх мовах. Однак у Python його синтаксис дещо відрізняється від усіх інших:

якщо умова:

    <входящее выражение 1>

    <входящее выражение 2>

<не входящее выражение>

Спочатку оголошується сам оператор, після чого пишеться умова, за якої він починає працювати. Умова може бути істинною або хибною.

Далі йде блок з командами. Якщо він слідує безпосередньо за критерієм, який має бути виконаний, тоді відповідна послідовність команд називається блоком if. У ньому можна використовувати будь-яку кількість команд.

Увага! Відступ у всіх командах блоку if має бути однакового розміру. Межі блоку визначаються відступами. 

Відповідно до мовної документації, відступ становить 4 інтервали. 

Як працює цей оператор? Коли інтерпретатор бачить слово if, він негайно перевіряє вираз на відповідність заданим користувачем критеріям. Якщо це так, то він починає шукати інструкції і виконувати їх. В іншому випадку всі команди з цього блоку пропускаються.

Якщо оператор після умови не має відступу, він не розглядається як блок if. У нашій ситуації ця лінія є . Тому, незалежно від результату перевірки, цей рядок буде виконано.

Ось фрагмент коду для прикладу того, як працює цей оператор.

число = int(введення(“Введіть число: “))

якщо число > 10:

    print(“Число більше 10”)

Ця програма запитує у користувача число та перевіряє, чи воно більше 10. Якщо так, повертає відповідну інформацію. Наприклад, якщо користувач вводить цифру 5, то програма просто завершиться, і все.

Але якщо вказати число 100, то перекладач зрозуміє, що більше десяти, і повідомить це.

Увага! У нашому випадку, якщо умова хибна, програма зупиняється, оскільки після інструкції не дається жодна команда.

У наведеному вище коді є лише одна команда. Але їх набагато більше. Єдина вимога – зробити відступ.

Тепер давайте розберемо цю послідовність команд.

число = int(вхід(“Напишіть число: “))

якщо число > 10:

    print(“перший рядок”)

    print(“другий рядок”)

    print(“третій рядок”)

print(“Рядок, який виконується, незалежно від введеного числа”)

print(“Закінчити програму”)

Спробуйте вгадати, який результат буде, якщо ви введете значення 2, 5, 10, 15, 50.

Як бачимо, якщо введене користувачем число більше десяти, то виводиться три рядки + один з текстом «Запускати кожен раз …» і один «Кінець», а якщо менше десяти, то тільки один, з інший текст. Якщо значення true, виконуватимуться лише рядки 3,4,5, XNUMX, XNUMX. Однак останні два рядки будуть написані незалежно від того, яке число вкаже користувач.

Якщо ви використовуєте оператори безпосередньо в консолі, результат буде іншим. Інтерпретатор одразу включає багаторядковий режим, якщо після вказівки критерію перевірки натиснути Enter.

Припустимо, ми написали наступну послідовність команд.

>>>

>>> n = 100

>>> якщо n > 10:

...

Після цього ми побачимо, що >>> замінено крапкою. Це означає, що ввімкнено багаторядковий режим введення. Простіше кажучи, натиснувши Enter, ви перейдете на вхід другого етапу інструкції. 

І для того, щоб вийти з цього блоку, потрібно додати до блоку ще одну конструкцію if.

>>>

>>> n = 100

>>> якщо n > 10:

… print(«nv 10»)

...

Якщо умова не виконується, програма завершується. Це проблема, оскільки користувач може сприйняти таку програму як закриту через збій. Тому необхідно давати зворотний зв'язок з користувачем. Для цього використовується посилання якщо ще.

оператор виразу якщо ще

Цей оператор дозволяє реалізувати зв'язок: якщо вираз відповідає певному правилу, виконати ці дії, а якщо ні, то інші. Тобто це дозволяє розділити потік програми на дві дороги. Синтаксис інтуїтивно зрозумілий:

якщо умова:

    # якщо блок

    заява 1

    заява 2

    і так далі

ще:

    # інший блок

    заява 3

    заява 4

    і так далі:

Пояснимо, як працює цей оператор. Спочатку в потоці виконується стандартний оператор тис, перевірка відповідності стан "Правда чи неправда". Подальші дії залежать від результатів перевірки. Якщо істинно, інструкція, яка знаходиться в послідовності інструкцій після умови, виконується безпосередньо. тис, якщо це неправда, то ще

Таким чином можна впоратися з помилками. Наприклад, користувачеві потрібно ввести радіус. Очевидно, це може бути лише число зі знаком плюс або це нульове значення. Якщо воно менше 0, то потрібно видати повідомлення з проханням ввести позитивне число. 

Ось код, який реалізує це завдання. Але тут є одна помилка. Спробуйте вгадати, який саме. 

radius = int(input(“Введіть радіус: “))

якщо радіус >= 0:

    print(“Окружність = “, 2 * 3.14 * радіус)

    print(“Площа = “, 3.14 * радіус ** 2)

    ще:

        print(“Будь ласка, введіть позитивне число”)

Помилка невідповідності відступів. Якщо і Інакше повинні розташовуватися без них або з однаковою їх кількістю (в залежності від того, вкладені вони чи ні).

Давайте наведемо інший варіант використання (де все буде правильно з вирівнюванням операторів) – елемент програми, який перевіряє пароль.

пароль = вхід (“Введіть пароль: “)

якщо пароль == «тсс»:

    print("Ласкаво просимо")

ще:

    print(“Доступ заборонено”)

Ця інструкція пропускає користувача далі, якщо пароль sshh. Якщо будь-яка інша комбінація літер і цифр, то відображається повідомлення «Доступ заборонено».

оператор-вираз if-elif-else

Тільки якщо кілька умов не виконуються, виконується оператор, який є в блоці. ще. Цей вираз працює так.

якщо умова_1:

    # якщо блок

    заяву

    заяву

    більше заяв

умова elif_2:

    # перший блок elif

    заяву

    заяву

    більше заяв

умова elif_3:

    # другий блок elif

    заяву

    заяву

    більше заяв

...

ще

    заяву

    заяву

    більше заяв

Ви можете вказати будь-яку кількість додаткових умов.

Вкладені оператори

Інший спосіб реалізувати кілька умов — вставити додаткові перевірки умов у блок if.

Оператор if всередині іншого блоку умови

gre_score = int(input(“Введіть поточний кредитний ліміт”))

per_grad = int(input(“Введіть свій кредитний рейтинг: “))

якщо per_grad > 70:

    # зовнішній блок if

        якщо gre_score > 150:

            # внутрішній блок if

    print(«Вітаємо, ви отримали кредит»)

ще:

    print(«Вибачте, ви не маєте права на кредит»)

Ця програма виконує перевірку кредитного рейтингу. Якщо воно менше 70, програма повідомляє, що користувач не має права на кредит. Якщо він більший, виконується друга перевірка, щоб побачити, чи поточний кредитний ліміт перевищує 150. Якщо так, то відображається повідомлення про те, що позику видано.

Якщо обидва значення false, то виводиться повідомлення про те, що користувач не має можливості отримати кредит. 

Тепер давайте трохи переробимо цю програму.

gre_score = int(input(“Введіть поточний ліміт: “))

per_grad = int(input(“Введіть кредитну оцінку: “))

якщо per_grad > 70:

    якщо gre_score > 150:

        print(«Вітаємо, ви отримали кредит»)

    ще:

        print(“Ваш кредитний ліміт низький”)

ще:

    print(«Вибачте, ви не маєте права на кредит»)

Сам код дуже схожий, але вкладений if також надає алгоритм на випадок, якщо умова з нього виявиться хибною. Тобто ліміт на карті недостатній, але кредитна історія хороша, виводиться повідомлення «У вас низький кредитний рейтинг».

оператор if-else всередині умови ще

Давайте зробимо ще одну програму, яка визначає оцінку студента на основі тестових балів.

score = int(input(“Введіть свій рахунок: “))

якщо оцінка >= 90:

    print(“Чудово! Ваша оцінка – A”)

ще:

    якщо оцінка >= 80:

print(“Чудово! Ваша оцінка B”)

    ще:

якщо оцінка >= 70:

    print(“Добре! Ваша оцінка – C”)

ще:

    якщо оцінка >= 60:

print(“Ваша оцінка D. Варто повторити матеріал.”)

    ще:

print(«Ви провалили іспит»)

Програма спочатку перевіряє, чи бал більший або дорівнює 90. Якщо так, він повертає оцінку A. Якщо ця умова хибна, то виконуються наступні перевірки. Ми бачимо, що на перший погляд алгоритм майже однаковий. Тому замість перевірки всередині ще краще використовувати комбінацію якщо-еліф-інше.

Отже оператор if виконує дуже важливу функцію – забезпечує виконання певних фрагментів коду, лише якщо в цьому є потреба. Без нього неможливо уявити програмування, тому що навіть найпростіші алгоритми вимагають розгалужень на кшталт «підеш наліво — знайдеш, а направо — то треба зробити те і те».

залишити коментар