Розглянемо найчастіші помилки, які зустрічають новачки в Python.
TypeError — операція з непідходящим типом даних:
• '5' + 3 — не можна додавати рядок і число
• len(42) — len() не працює з числами
NameError — змінна не визначена:
• print(hello) — забули лапки або не створили змінну
• Друкарська помилка в імені змінної
IndexError — звернення до неіснуючого індексу:
• lst = [1, 2, 3]; lst[5] — індекс 5 не існує
• Часто при переборі списку вручну
KeyError — звернення до неіснуючого ключа словника:
• d = {'a': 1}; d['b'] — ключа 'b' немає
• Рішення: використовуйте d.get('b', значення_за_замовчуванням)
SyntaxError — порушення синтаксису Python:
• Забуте двокрапка після if/for/def
• Незакрита дужка або лапка
ValueError — правильний тип, але непідходяще значення:
• int('abc') — рядок 'abc' не можна перетворити в число
💡 Приклад коду
Вивід:
📝 ЗАВДАННЯ (3)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 208
"
data-task-id=" Warning: Undefined array key "id" in /home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 209
"
data-xp="10">
1.
Завдання: Виправ усі помилки
10 XP
У коді нижче 5 помилок різних типів. Знайдіть та виправте кожну:
age = input('Вік: ')
print('Через рік вам буде: ' + age + 1)
user = {'name': 'Аня'}
print('Email: ' + user['email'])
print(mesage)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: 1) age — рядок, потрібно int(). 2) Конкатенація рядка і числа. 3) Індекс 3 не існує. 4) Ключ 'email' відсутній. 5) Друкарська помилка в імені змінної.
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 296
">
Вивід:
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 304
">
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 208
"
data-task-id=" Warning: Undefined array key "id" in /home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 209
"
data-xp="20">
2.
Завдання: Визнач тип помилки
20 XP
Для кожного фрагмента коду визначте, який тип помилки виникне (не запускаючи код):
1) len(100)
2) items = []; items[0]
3) data = {}; data['key']
4) x = int('hello')
5) if True print('так')
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: Подумайте: що не так з типом, індексом, ключем, значенням або синтаксисом?
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">
🔓 Розв'язок:
# 1) TypeError — len() не працює з числами
# 2) IndexError — порожній список, індекс 0 не існує
# 3) KeyError — ключ 'key' відсутній у порожньому словнику
# 4) ValueError — рядок 'hello' не можна перетворити в int
# 5) SyntaxError — забуто двокрапку після if True
# Перевіримо:
try:
len(100)
except TypeError as e:
print(f'1) TypeError: {e}')
try:
items = []; items[0]
except IndexError as e:
print(f'2) IndexError: {e}')
try:
data = {}; data['key']
except KeyError as e:
print(f'3) KeyError: {e}')
try:
x = int('hello')
except ValueError as e:
print(f'4) ValueError: {e}')
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 296
">
Вивід:
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 304
">
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 208
"
data-task-id=" Warning: Undefined array key "id" in /home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 209
"
data-xp="30">
3.
Завдання: Захисний код
30 XP
Напишіть функцію safe_get(lst, index), яка повертає елемент списку за індексом. Якщо індекс виходить за межі — повертає None та друкує попередження.
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: Використовуйте try/except IndexError або перевірку if 0 <= index < len(lst)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">