Модуль 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
">