🎉 Разбор задачи дня: где скрывалась ошибка? 🎉



Спасибо всем, кто принял участие и поделился своими вариантами в комментариях — вы большие молодцы! 👏 Теперь давайте разберёмся, в чём была загвоздка.

🔍 Что не так с кодом:
- Проблема возникает при передаче в функцию `calculate_average` пустого списка — в нашем случае это переменная `empty_list`.

- При вызове `len(empty_list)` получится 0, а затем код попытается выполнить деление на ноль: `total / len(numbers)`.

- В Python это вызовет ошибку `ZeroDivisionError`, и программа аварийно завершится. 💥

💡 Как исправить:
1. Нужно добавить проверку на пустой список в начале функции.
2. Если список пуст — вернуть, например, `0` или специальное значение (вроде `None`), либо выбросить понятное исключение с сообщением.

✅ Пример исправленного кода:

def calculate_average(numbers):
if len(numbers) == 0:
return None # или 0, или raise ValueError("Список не должен быть пустым")
total = 0
for num in numbers:
total += num
return total / len(numbers)

data = [10, 20, 30]
result = calculate_average(data)
print("Среднее значение:", result)

empty_list = []
print(calculate_average(empty_list)) # Теперь вернёт None, а не вызовет ошибку


🤓 Почему это важно:
* Обработка краевых случаев (вроде пустых данных) — обязательный навык для любого разработчика.
* Такие проверки делают код надёжным и устойчивым к неожиданным входным данным. 💪

👉 Хотите научиться писать чистый и безопасный код, уверенно работать с исключениями и разбирать сложные кейсы? Пройдите короткий опрос и узнайте, какой курс обучения подходит именно вам:

🌐 На сайте: https://infazy.ru/podobrat-kurs-python
🤖 В боте: https://t.me/kursypythonbot

#Python #Программирование #Обучение #Код #РазборЗадач #Отладка #НавыкиРазработчика
Просмотры: 47
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти