Модуль 7A: Налагодження та обробка помилок (глибше)
Налагодження за допомогою print() та покроковий аналіз коду
📖 Теорія
Налагодження (debugging) — процес пошуку та виправлення помилок у коді. Найпростіший спосіб — налагодження за допомогою print().
Метод налагодження через print():
1. Додайте print() перед підозрілим місцем
2. Виведіть значення змінних та їх типи
3. Перевіряйте, чи доходить виконання до певного рядка
4. Використовуйте f-рядки: print(f'x = {x}, тип: {type(x)}')
Покроковий аналіз коду (ручне трасування):
1. Візьміть аркуш паперу або коментар
2. Записуйте значення кожної змінної після кожного рядка
3. Слідкуйте за умовами та циклами крок за кроком
Поради з налагодження:
• Перевірте типи даних (type())
• Виведіть значення на кожній ітерації циклу
• Виведіть аргументи функції на вході та результат
• Не видаляйте налагоджувальні print() — коментуйте їх
💡 Приклад коду
Вивід:
📝 ЗАВДАННЯ (2)
/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.
Завдання: Знайди баг за допомогою print()
10 XP
Функція повинна повертати список парних чисел, але повертає непарні. Додайте print() для налагодження, знайдіть та виправте помилку.
def get_evens(numbers):
evens = []
for n in numbers:
if n % 2 == 1:
evens.append(n)
return evens
print(get_evens([1, 2, 3, 4, 5, 6]))
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: Виведіть n % 2 на кожній ітерації. Парні числа — це ті, де n % 2 == 0, а не == 1.
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">
🔓 Розв'язок:
def get_evens(numbers):
evens = []
for n in numbers:
print(f'n={n}, n % 2 = {n % 2}')
if n % 2 == 0: # Було == 1, виправлено на == 0
evens.append(n)
return evens
result = get_evens([1, 2, 3, 4, 5, 6])
print('Результат:', result) # [2, 4, 6]
/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
Не запускаючи код, виконайте ручне трасування. Запишіть значення змінних після кожного рядка. Потім перевірте.
result = []
for i in range(4):
if i % 2 == 0:
result.append(i * 10)
else:
result.append(i)
print(result)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: range(4) дає 0, 1, 2, 3. Для кожного перевіряйте i % 2 == 0.
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">
🔓 Розв'язок:
# Ручне трасування:
# i=0: 0%2==0 True -> result = [0]
# i=1: 1%2==0 False -> result = [0, 1]
# i=2: 2%2==0 True -> result = [0, 1, 20]
# i=3: 3%2==0 False -> result = [0, 1, 20, 3]
result = []
for i in range(4):
if i % 2 == 0:
result.append(i * 10)
else:
result.append(i)
print(result) # [0, 1, 20, 3]
/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
">