Урок 14. Помилки та `try/except`
Урок 14. Помилки та try/except
Section titled “Урок 14. Помилки та try/except”Тривалість: 40–50 хв
XP: 190
🎯 Місія
Section titled “🎯 Місія”Навчитися читати помилки та не дозволяти програмі падати через неправильні дані.
💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”try/except — це як захисний шолом або подушка безпеки для програми. Ти кажеш: «Спробуй зробити це (try), але якщо станеться помилка — я тебе зловлю (except) і скажу, що пішло не так». Програма НЕ падає, а показує приємне повідомлення. Це як страховка: краще мати її і не мати потреби, ніж мати потребу і не мати її.
graph TD
A["спробуй (try)"] --> B{"виконується?"}
B -->|"так, все ок" | C["виконуй далі"]
B -->|"ні (помилка!)"| D["except → повідомлення"]
D --> C
🧠 Помилка — це підказка
Section titled “🧠 Помилка — це підказка”number = int("dragon")Отримаємо ValueError.
🛡 try/except
Section titled “🛡 try/except”try: age = int(input("Age: ")) print(age)except ValueError: print("Потрібно ввести число!")🔁 Просимо до правильної відповіді
Section titled “🔁 Просимо до правильної відповіді”while True: try: number = int(input("Введи число: ")) break except ValueError: print("Це не число!")📁 Неіснуючий файл
Section titled “📁 Неіснуючий файл”try: with open("save.txt", "r") as file: data = file.read()except FileNotFoundError: print("Збереження ще немає.")🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”try: # Пробуємо виконати блок коду age = int(input("Age: ")) # Запитуємо вік і перетворюємо на число print(age) # Якщо все добре — друкуємоexcept ValueError: # Якщо сталася помилка типу ValueError print("Потрібно ввести число!") # Показуємо дружнє повідомленняtry: with open("save.txt", "r") as file: # Пробуємо відкрити файл data = file.read() # Читаємо вмістexcept FileNotFoundError: # Якщо файлу не існує print("Збереження ще немає.") # Повідомляємо про цеwhile True: # Безкінечний цикл try: number = int(input("Введи число: ")) # Пробуємо отримати число break # Якщо успішно — виходимо з циклу except ValueError: # Якщо не число print("Це не число!") # Повідомляємо і цикл повторюється✏️ Вправи
Section titled “✏️ Вправи”- Безпечно запитай вік.
- Безпечно запитай два числа.
- Оброби відсутній файл.
- Зроби input, який повторюється після неправильного вводу.
⭐ Challenge — Safe Calculator
Section titled “⭐ Challenge — Safe Calculator”Калькулятор має пережити неправильний input і ділення на нуль.
Знайди, яку помилку викликає:
100 / 0і оброби її.
🐞 Debug Challenge
Section titled “🐞 Debug Challenge”Які помилки можливі тут?
number = int(input("Number: "))result = 100 / number✅ Готовий далі, якщо
Section titled “✅ Готовий далі, якщо”Марко читає останній рядок traceback та використовує ValueError і FileNotFoundError.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Зроби save/load таким, щоб відсутність save-файлу не ламала програму.
⚡ Перевір себе
Section titled “⚡ Перевір себе”- Яка помилка виникає при
int("dragon")? - Чому
except ValueErrorкраще за простоexcept? - Що станеться, якщо у блоці
tryнемає помилки — чи виконаєтьсяexcept? - Як змусити користувача вводити число доти, поки не введе правильно?