Python · Синтаксис · Початковий рівень

Умовні оператори

15 завдань

Практичні вправи щодо умовних операторів у Python: порівняння чисел, перевірка діапазонів, робота з str, паролями, відсотками та базовою логікою if, elif, else.

Як Python приймає рішення

#
Програма без вибору була б нудною — вона робила б одне й те саме щоразу, незважаючи на те, що вводить користувач або які дані отримує. Умовні оператори вирішують цю проблему. Вони дозволяють коду подивитися на значення й обрати різний шлях залежно від того, що він знайде. Оператор if — головний інструмент для цього. Ось його повна форма: ```python if умова: # виконується, коли умова True elif інша_умова: # виконується, коли перша була False, але ця — True elif ще_одна: # elif може бути скільки завгодно else: # виконується, якщо нічого вище не співпало ``` Двокрапка після кожної умови обов'язкова — Python сприймає її як початок блоку. Все всередині блоку має бути з відступом у чотири пробіли. Python використовує відступи для визначення меж блоків, на відміну від мов із фігурними дужками. Python перевіряє умови зверху вниз і зупиняється на першій, що є True. Виконується лише одна гілка — всі решта пропускаються. Тому порядок важливий: спочатку ставте найспецифічніші перевірки. elif і else обидва необов'язкові. Звичайний if без нічого після нього — цілком коректний код, коли потрібно діяти лише в одному конкретному випадку, а в усіх інших — нічого не робити.

Порівняння значень і комбінування умов

#
Умова — це будь-який вираз, що обчислюється до True або False. Більшість умов — це порівняння, побудовані за допомогою шести операторів: ```python a == b # True, коли a і b рівні a != b # True, коли вони різні a > b # True, коли a строго більше a < b # True, коли a строго менше a >= b # True, коли a більше або рівне a <= b # True, коли a менше або рівне ``` Варто пам'ятати: == перевіряє рівність, тоді як = присвоює значення. Використання одного = всередині умови — синтаксична помилка в Python, що насправді добре: мова робить цю конкретну помилку неможливою. Коли однієї умови недостатньо, їх комбінують за допомогою and і or: ```python if age >= 13 and age <= 17: print("Підліток") if score < 0 or score > 100: print("Бал поза межами") ``` З and обидві сторони мають бути True, щоб уся умова спрацювала. З or — достатньо, щоб хоча б одна сторона була True. Також можна заперечити умову за допомогою not: ```python if not is_admin: print("Доступ заборонено") ``` Python підтримує ланцюгові порівняння, які читаються природніше для перевірки діапазонів: ```python if 13 <= age <= 17: print("Підліток") ``` Це точний еквівалент age >= 13 and age <= 17, але виглядає ближче до математичного запису. Обидві форми коректні — використовуйте ту, що читається зрозуміліше.

Читання вводу і поширені патерни

#
У цих завданнях програма читає щось від користувача і приймає рішення на основі цього. Весь ввід надходить як рядок, тому перше, що зазвичай потрібно зробити, — перетворити його на потрібний тип. ```python number = float(input("Введіть число: ")) if number > 0: print("Додатне") elif number < 0: print("Від'ємне") else: print("Нуль") ``` Використовуйте int(), коли потрібне ціле число, і float(), коли потрібне дробове. Якщо забути про перетворення, Python спробує порівняти рядок із числом, що призведе до TypeError під час виконання — одна з найпоширеніших початкових помилок. Перевірка ділення без остачі за допомогою оператора залишку: ```python n = int(input("Введіть число: ")) if n % 2 == 0: print("Парне") else: print("Непарне") ``` Оператор % повертає залишок від цілочисельного ділення. n % 2 дорівнює 0 для кожного парного числа і 1 для кожного непарного. Та сама ідея масштабується на будь-який дільник: n % 3 == 0 перевіряє ділення на 3, n % 10 == 0 — кратність десяти. Перевірка довжини рядка або списку за допомогою len(): ```python password = input("Введіть пароль: ") if len(password) < 6: print("Занадто короткий") else: print("Прийнято") ``` len() працює зі рядками, списками і кортежами. Ви будете бачити його постійно. Захист від ділення на нуль: ```python a = float(input("a: ")) b = float(input("b: ")) if b == 0: print("Ділення на нуль неможливе") else: print(a / b) ``` Завжди перевіряйте дільник перед діленням. Якщо b дорівнює нулю і ви все одно спробуєте a / b, Python згенерує ZeroDivisionError і програма впаде. Патерн із перевіркою if — стандартне рішення.

Швидкий довідник: умови

#
**Оператори порівняння** | Оператор | Значення | Приклад | |---|---|---| | `==` | рівно | `x == 5` | | `!=` | не рівно | `x != 0` | | `>` | більше | `age > 18` | | `<` | менше | `age < 18` | | `>=` | більше або рівно | `score >= 60` | | `<=` | менше або рівно | `score <= 100` | **Логічні оператори** | Оператор | Результат True коли… | |---|---| | `a and b` | обидва `a` і `b` True | | `a or b` | хоча б один True | | `not a` | `a` є False | **Ланцюжкові порівняння** ```python # замість age >= 13 and age <= 17 if 13 <= age <= 17: print('Підліток') if 0 < x < 100: print('В діапазоні') ``` **Правдиві та хибні значення** Будь-яке значення можна використовувати в `if` без явного порівняння. Python вважає **хибними** (`False`): `0`, `0.0`, `''` (порожній рядок), `[]`, `{}`, `None`. Все інше — **правдиве** (`True`). ```python name = input('Введіть ім\'я: ') if name: # True коли name не порожній print('Привіт,', name) items = [] if not items: # True коли список порожній print('Нічого немає') ``` **Типові патерни** ```python # ділення без остачі if n % 2 == 0: print('парне') if n % 3 == 0: print('ділиться на 3') # перевірка діапазону if 0 <= score <= 100: print('коректна оцінка') # захист від ділення на нуль if b != 0: print(a / b) # перетворення типу перед порівнянням n = int(input('Введіть число: ')) ```
01

Перевірка знака числа.

#

Напишіть програму, яка приймає число і виводить, додатне воно, від’ємне чи дорівнює нулю.

number = float(input("Введіть число: "))

Рішення
number = float(input("Введіть число: "))

if number > 0:
    print("Число додатне")
elif number < 0:
    print("Число від’ємне")
else:
    print("Число дорівнює нулю")

# або так можна: спочатку підготувати повідомлення, а потім один раз його вивести
number = float(input("Введіть число: "))

if number > 0:
    result = "Число додатне"
elif number < 0:
    result = "Число від’ємне"
else:
    result = "Число дорівнює нулю"

print(result)
02

Вікова категорія.

#

Програма приймає вік користувача і виводить: "Дитина" (до 12), "Підліток" (13–17), "Дорослий" (18 і старше).

age = int(input("Введіть вік: "))

Рішення
age = int(input("Введіть вік: "))

if age <= 12:
    print("Дитина")
elif age <= 17:
    print("Підліток")
else:
    print("Дорослий")

# другий варіант: межі можна записати явно
age = int(input("Введіть вік: "))

if age < 13:
    print("Дитина")
elif age >= 13 and age <= 17:
    print("Підліток")
else:
    print("Дорослий")
03

Більше з двох чисел.

#

Користувач вводить два числа. Виведіть більше з них. Якщо вони рівні — виведіть повідомлення "Числа рівні".

a = float(input("Введіть перше число: "))
b = float(input("Введіть друге число: "))

Рішення
a = float(input("Введіть перше число: "))
b = float(input("Введіть друге число: "))

if a > b:
    print("Більше число:", a)
elif b > a:
    print("Більше число:", b)
else:
    print("Числа рівні")

# або так можна, через змінну result
a = float(input("Введіть перше число: "))
b = float(input("Введіть друге число: "))

if a == b:
    result = "Числа рівні"
elif a > b:
    result = f"Більше число: {a}"
else:
    result = f"Більше число: {b}"

print(result)
04

Температура: холодно, тепло, спекотно.

#

Програма приймає температуру і виводить: "Холодно" (менше 10), "Тепло" (10–24), "Спекотно" (25 і більше).

temp = float(input("Введіть температуру: "))

Рішення
temp = float(input("Введіть температуру: "))

if temp < 10:
    print("Холодно")
elif temp <= 24:
    print("Тепло")
else:
    print("Спекотно")
05

Перевірка парності числа.

#

Користувач вводить число. Перевірте, чи є воно парним.

num = int(input("Введіть число: "))

Рішення
num = int(input("Введіть число: "))

if num % 2 == 0:
    print("Число парне")
else:
    print("Число непарне")

# або так можна: зберегти перевірку в окрему змінну
num = int(input("Введіть число: "))

is_even = num % 2 == 0

if is_even:
    print("Число парне")
else:
    print("Число непарне")
06

Перевірка довжини пароля.

#

Користувач вводить пароль. Якщо довжина пароля менша за 6 символів — виведіть "Пароль занадто короткий", інакше — "Пароль прийнято".

password = input("Введіть пароль: ")

Рішення
password = input("Введіть пароль: ")

if len(password) < 6:
    print("Пароль занадто короткий")
else:
    print("Пароль прийнято")
07

Оцінка за шкалою A-F.

#

Користувач вводить оцінку від 0 до 100. Виведіть: A (90–100), B (80–89), C (70–79), D (60–69), F (менше 60).

score = int(input("Введіть оцінку: "))

Рішення
score = int(input("Введіть оцінку: "))

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
elif score >= 60:
    print("D")
else:
    print("F")

# або так можна: йти від менших меж до більших
score = int(input("Введіть оцінку: "))

if score < 60:
    print("F")
elif score < 70:
    print("D")
elif score < 80:
    print("C")
elif score < 90:
    print("B")
else:
    print("A")
08

Кратність двох чисел.

#

Користувач вводить два числа. Перевірте, чи кратне перше число другому.

a = float(input("Введіть перше число: "))
b = float(input("Введіть друге число: "))

Рішення
a = float(input("Введіть перше число: "))
b = float(input("Введіть друге число: "))

if b == 0:
    print("На нуль ділити не можна")
elif a % b == 0:
    print("Перше число кратне другому")
else:
    print("Перше число не кратне другому")
09

Округлення в діапазоні 0-100.

#

Користувач вводить неціле число. Якщо воно більше 100 або менше 0 — виведіть "Тільки від 0 до 100", інакше округліть його за допомогою round до 2 знаків після крапки.

num = float(input("Введіть число: "))

Рішення
num = float(input("Введіть число: "))

if num < 0 or num > 100:
    print("Тільки від 0 до 100")
else:
    print(round(num, 2))

# або так можна: перевірку діапазону зберегти у змінну
num = float(input("Введіть число: "))

in_range = 0 <= num <= 100

if in_range:
    print(round(num, 2))
else:
    print("Тільки від 0 до 100")
10

Довгий чи короткий рядок.

#

Користувач вводить рядок. Якщо довжина рядка більша за 10 символів — виведіть "Довгий рядок", інакше — "Короткий рядок".

text = input("Введіть рядок: ")

Рішення
text = input("Введіть рядок: ")

if len(text) > 10:
    print("Довгий рядок")
else:
    print("Короткий рядок")

# або так можна через змінну message
text = input("Введіть рядок: ")

if len(text) > 10:
    message = "Довгий рядок"
else:
    message = "Короткий рядок"

print(message)
11

Відсоток від числа.

#

Користувач вводить a і b. Порахуйте скільки відсотків a становить від b. Формула відсотків: (a/b)*100.

a = float(input("Частина: "))
b = float(input("Від цілого: "))

Рішення
a = float(input("Частина: "))
b = float(input("Від цілого: "))

if b == 0:
    print("На нуль ділити не можна! І частини від 0 не існує.")
else:
    result = (a / b) * 100
    result = round(result, 2)
    print(str(result) + "%")

# або так можна: округлити одразу при створенні result
a = float(input("Частина: "))
b = float(input("Від цілого: "))

if b == 0:
    print("На нуль ділити не можна! І частини від 0 не існує.")
else:
    result = round((a / b) * 100, 2)
    print(str(result) + "%")
12

Округлення до потрібного знака.

#

Користувач вводить не ціле число, наприклад 5.2564494, і вводить до якого знака після коми (крапки) його округлити. Зробіть обчислення.

num = float(input("Введіть число: "))
rounding = int(input("До якого знака округляти: "))

Рішення
num = float(input("Введіть число: "))
rounding = int(input("До якого знака округляти: "))

if rounding < 0:
    print("Значення для кількості знаків після крапки не може бути меншим за 0.")
    # Хоча якщо передати в round від’ємне число в параметр до якого знака округляти,
    # то результатом округлення буде просто 0. Так спеціально зроблено, щоб не було помилок.
else:
    print(round(num, rounding))
13

Вибір int або float.

#

Користувач вводить число, перевірте, якщо у введеному є крапка, то сконвертуйте його у float, якщо крапки немає — у int.

num = input("Введіть число: ")

Рішення
num = input("Введіть число: ")

if "." in num:
    num = float(num)
else:
    num = int(num)

print(num)

# другий варіант: можна перевірити і кому, якщо користувач вводить число у такому форматі
num = input("Введіть число: ")

if "." in num or "," in num:
    num = num.replace(",", ".")
    num = float(num)
else:
    num = int(num)

print(num)
14

Ділення без помилки нуля.

#

Потрібно поділити a на b. Якщо b дорівнює 0, то виведіть повідомлення, що на 0 ділити не можна. А якщо все ОК, то порахуйте!

a = float(input("Введіть число: "))
b = float(input("Введіть 2-е число: "))

Рішення
a = float(input("Введіть число: "))
b = float(input("Введіть 2-е число: "))

if b == 0:
    print("На нуль ділити не можна! Навіть якщо дуже хочеться!")
else:
    print("Результат:", a / b)


# АБО
if b == 0:
    print("На нуль ділити не можна! Навіть якщо дуже хочеться!")
else:
    result = a / b
    print("Результат:", result)


# АБО
if b == 0:
    print("На нуль ділити не можна! Навіть якщо дуже хочеться!")
else:
    result = a / b
    print("Результат:", round(result, 2))


# АБО
if b == 0:
    result = "На нуль ділити не можна! Навіть якщо дуже хочеться!"
else:
    result = round(a / b, 2)

print("Результат:", result)


# АБО інші зручні у цій ситуації варіанти, навіть так:
if b == 0:
    message = "На нуль ділити не можна! Помилка операції -"
    result = False
else:
    message = "Результат:"
    result = round(a / b, 2)

print(message, result)
15

Анкета імені та прізвища.

#

Користувач вводить Ім’я, а потім окремо Прізвище. Давайте спробуємо зробити так, що якщо він введе все правильно, то ми об’єднаємо його Ім’я та Прізвище в один рядок (як один новий об’єкт) і виведемо в термінал. А якщо він помилиться і введе в поле "Ім’я" анкети одразу і своє Ім’я, і Прізвище, то ми виведемо повідомлення: "Уважно заповнюйте анкету!! Це був останній бланк ахахах)))" і програма завершиться. Підказки: 1) Там буде пробіл у рядку, якщо він введе все одразу. 2) Спочатку перевіряйте помилковий варіант, так буде простіше і правильніше.

name = input("Введіть Ім’я: ")
last_name = input("Введіть Прізвище: ")
Рішення
name = input("Введіть Ім’я: ")
last_name = input("Введіть Прізвище: ")

if " " in name:
    print("Уважно заповнюйте анкету!! Це був останній бланк ахахах)))")
else:
    full_name = name + " " + last_name
    print(full_name)


# або більш передбачливо з оператором or:
if " " in name:
    print("Уважно заповнюйте анкету!! Це був останній бланк ахахах)))")
elif name == "" or last_name == "":
    print("Бланк потрібно заповнити повністю!! (поки що все заново)")
else:
    full_name = name + " " + last_name
    print(full_name)