Рубріки: Теорія

Умовні оператори в Python: приклади та як використовувати

Сергій Бондаренко

Сьогодні ми поговоримо про конструкцію перевірки умови if. Це одна з базових конструкцій у програмуванні — і не тільки в Python.

За допомогою конструкції if можна вказати критерії виконання коду, що дозволяє програмі приймати рішення на основі отриманих даних та визначати якою гілкою алгоритму їй рухатися далі.

У цьому матеріалі розглянемо синтаксис, блок-схеми та приклади трьох видів конструкції if, які є в Python:

  • if;
  • if...else;
  • if...elif...else.

Конструкція if

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

Синтаксис конструкції if

У мові програмування Python синтаксис конструкції if виглядає так:

if деякий_блок_коду:

    блок_коду

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

Блок-схема конструкції if

Блок-схема конструкції if виглядає так:

Приклад конструкції if

Приклад використання конструкції if в Python:

x = 17
if x > 0:
    print("x is positive")

У цьому прикладі, якщо значення змінної x більше нуля, буде виведено рядок x is positive.

Конструкція if…else

Конструкція if...else трохи складніша, ніж ifвона дозволяє виконати один блок коду, якщо умова істинна, та інший блок коду, якщо умова помилкова.

Синтаксис конструкції if…else

Синтаксис конструкції if...else в Python виглядає так:

if выраз:
    блок коду 1
else:
    блок коду 2

Синтаксис схожий на if, але додається else і двокрапка, щоб сказати, що робити програмі, якщо перевірка на першу умову не поверне значення True.

Блок-схема конструкції if…else

Блок-схема конструкції if...else виглядає так:

Приклад конструкції if…else

Приклад використання конструкції if...else в Python:

event_type = "HighloadToday"

if event_type == "HighloadToday":
    print("Welcome to HighloadToday conference!")
    print("Don't forget to visit our booth!")
else:
    print("Welcome to our event!")

У цьому прикладі ми ініціалізуємо, а потім перевіряємо значення змінної event_type:

  • якщо воно дорівнює "HighloadToday", програма выводит виводить повідомлення про вітання на конференції HighloadToday и нагадує відвідати наш стенд;
  • якщо значення змінної не дорівнює "HighloadToday", програма виводить повідомлення про вітання на іншому заході.

Конструкція if…elif…else

Конструкція if...elif...else — найскладніша. Вона дозволяє обирати один із декількох блоків коду для виконання, залежно від того, яка із заданих умов є істинною.

Як працює if...elif...else:

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

Синтаксис конструкції if…elif…else

Синтаксис конструкції if...elif...else в Python виглядає так:

if вираз:
    блок коду 1
elif вираз2:
    блок коду 2
elif вираз3:
    блок коду 3
else:
    блок коду 4

Блок-схема конструкції if…elif…else

Блок-схема конструкції if...elif...else виглядає так:

Приклад використання конструкції if…elif…else в Python

Приклад нижче показує, як конструкція if...elif...else може бути використана для виконання різних дій залежно від значення змінної, а також налаштування параметрів обчислень відповідно до кожної умови:

product_type = "clothing"
product_price = 50

if product_type == "electronics":
    discount = 0.1
elif product_type == "clothing":
    discount = 0.2
elif product_type == "books":
    discount = 0.3
else:
    discount = 0.05

final_price = product_price - (product_price * discount)
print("The final price of the product is:", final_price)

Тут конструкція if...elif...else застосовується для перевірки значення змінної product_type та визначення відповідної знижки:

  • якщо product_type дорівнює "electronics", встановлюється знижка 10%;
  • якщо product_type дорівнює "clothing", знижка набуває значення 20%;
  • якщо product_type дорівнює"books", обирається знижка 30%;
  • якщо значення змінної не відповідає жодному із зазначених значень, знижка виставляється в 5%.

Потім обчислюється остаточна ціна товару з використанням формули final_price = product_price - (product_price * discount). При цьому значення змінної залежить від умов вище.

Зрештою, на екран виводиться повідомлення із остаточною ціною товару.

Хочеш глибше вивчати Python, ще й під наглядом досвідчених менторів? Приходь на курси Python від Hillel. Доступні два варіанти: Basic-курс та Pro, для тих, хто хоче вдосконалити знання.

Вкладені конструкції

Конструкції if можна вкладати одна в одну, щоб описати складніші умови.

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

if customer_type == "platinum":
    if request_type == "technical":
        handle_platinum_technical_request()
    elif request_type == "billing":
        handle_platinum_billing_request()
    else:
        handle_platinum_general_request()
elif customer_type == "gold":
    if request_type == "technical":
        handle_gold_technical_request()
    elif request_type == "billing":
        handle_gold_billing_request()
    else:
        handle_gold_general_request()
else:
    handle_regular_request()

У цьому прикладі окремі перевірки конструкції if...elif...else вкладено додаткові перевірки такого самого типу. Тобто спочатку програма перевіряє тип клієнта (Platinum або Gold), а потім вже тип заявки:

  • якщо це технічна заявка, вона обробляється функцією handle_platinum_technical_request();
  • якщо це заявка на оплату, вона обробляється функцією handle_platinum_billing_request();
  • якщо це загальна заявка, вона обробляється функцією handle_platinum_general_request().

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

Ремарка про відступи

Відступи в мові програмування Python є частиною синтаксису, яка відповідає за відділення блоків. І при використанні умовних конструкцій це особливо важливо.

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

В Python для створення відступів використовується пробіл або символ табуляції. Зазвичай для кожного нового блоку коду всередині умовної конструкції використовується відступ в чотири пробіли. Неправильне використання відступів може призвести до помилок синтаксису та виконання неправильного коду:

# Неправильно відформатований код

x = 5
if x > 0:
print("x is positive") # Неправильно відступлений блок коду
else:
print("x is negative")

У цьому прикладі блок коду, який повинен виконатися, якщо умова x > 0 істинна, не правильно відступлений. В результаті, при запуску цього коду виникне помилка синтаксису:

IndentationError: expected an indented block

Ця помилка виникає тому, що Python очікує, що наступний блок коду буде правильно відступлений після умовної конструкції.

Помилки будуть виникати навіть якщо ви забули про відступ лише в одному рядку:

# Неправильно відформатований код

x = 5
if x > 0:
    print("x is positive")
else:
print("x is negative")  # Неправильно відступлений блок коду

У цьому прикладі не правильно відформатовано частину коду, яка повинна виконатися, якщо умова x > 0 не є істинною. В результаті, при запуску цього коду програма виведе повідомлення “x is negative”, навіть якщо значення змінної x додатнє.

Висновок

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

Якщо потрібно описати складніші умови, можна використовувати конструкції  if...elseта if...elif...else. Для найскладніших алгоритмів використовуйте вкладені конструкції if.

Для закріплення матеріалу ми рекомендуємо подивитися відео:

А якщо ви вже знаєте базу Python і тепер хочете опанувати затребувану професію з цим скілом, реєструйтеся на курс Data Scientist від robot_dreams. Це комплексна 12-тижнева програма про магію даних.

Останні статті

Парламент збільшив штрафи за відмову від повістки та неявку до ТЦК

Верховна Рада проголосувала в цілому за законопроєкт № 10379, який вносить зміни в Кримінальний кодекс…

09.05.2024

Рада розглядає дві моделі економічного бронювання

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

09.05.2024

Офіційно: GitHub Copilot Chat тепер доступний на iOS та Android

Сервіс GitHub, який належить Microsoft, випустив Copilot Chat на iOS та Android. GitHub Copilot Chat…

08.05.2024

OpenAI знищила 100 000 книг, за якими тренували GPT-3. Причетні теж кудись зникли

Компанія OpenAI видалила два величезних набори даних «books1» і «books2», які використовувалися для навчання моделі…

08.05.2024

Реєстр військозообов’язаних «Оберіг» показуватиме статус отримання повістки

В реєстрі військовозообов'язаних «Оберіг» буде відображатися статус отримання повістки. Але цей процес буде відбуватися згідно…

08.05.2024

«Хакнуть» систему — босам «зріжуть» бонуси: Microsoft удосконалює програму кібербезпеки

Корпорація Microsoft в світлі останніх подій вирішила прив'язати зарплати керівників до функціонування систем безпеки: якщо…

08.05.2024