🎉 Разбор задачи: где прячется ошибка в коде на Python? 🎉
Привет, крутые разработчики! 😎 Вчера мы кинули вам задачку на внимательность — и сегодня разберём её по полочкам. 🤓
В чём была проблема? 🤔
Давай посмотрим на ключевые моменты:
✅ Функция работает нормально для обычного списка.
Для `data = [10, 20, 30]` всё считается верно: сумма 60, длина 3, среднее — 20. 👍
✅ А вот с пустым списком — проблема.
Когда передаём `empty_data = []`, длина списка становится 0.
✅ Деление на ноль — это ошибка.
В строке `average = total / len(numbers)` происходит попытка разделить число на 0, и Python выбрасывает исключение `ZeroDivisionError`. 💥
✅ Программа падает.
Вместо аккуратного результата пользователь видит трассировку ошибки — а в реальных проектах это может сломать весь скрипт. 😨
Как можно исправить? 💡
Есть два надёжных подхода:
📌 Вариант 1: проверка на пустой список (самый понятный) ✅
def calculate_average(numbers):
if not numbers: # Если список пустой
return 0 # Возвращаем 0 (или None — зависит от логики проекта)
total = sum(numbers)
average = total / len(numbers)
return average
Плюсы: сразу видно условие, легко читать и поддерживать. 👌
📌 Вариант 2: обработка исключения (более «питоновский» стиль) ✅
def calculate_average(numbers):
try:
total = sum(numbers)
average = total / len(numbers)
return average
except ZeroDivisionError:
return 0
Плюсы: чётко отделяет «нормальную логику» от обработки ошибок. 🛡
Какой вариант выбрать? 🤔
* Если пустая коллекция — это ожидаемая ситуация (например, пользователь ещё не ввёл данные), лучше Вариант 1.
* Если ошибка — редкий случай и ты хочешь обрабатывать сразу несколько типов исключений, подойдёт Вариант 2.
Какой подход тебе ближе? Напиши в комментариях — поболтаем про лучшие практики! 💬
Пройдите опрос и узнайте, какой курс обучения подходит именно вам на сайте: https://infazy.ru/podobrat-kurs-python или в боте https://t.me/kursypythonbot 🎓
#Python #Программирование #Практика #Coding #ЗадачиДляРазработчиков #ОбучениеПрограммированию #IT #РазборКода
Просмотры: 7