Вот подробное решение задачи:
Задача Напишите функцию divide_numbers, которая принимает два числа и возвращает результат их деления. Нужно предусмотреть обработку деления на ноль.
Что делает функция
- Проверяет, что оба аргумента являются числами (int или float).
- Если делитель b равен нулю, возбуждает исключение с понятным сообщением.
- Иначе возвращает результат деления a / b (число типа float в большинстве случаев).
Пошаговое объяснение
- Входные данные: два аргумента a и b.
- Типовая валидация: оба аргумента должны быть числами. Иначе — TypeError.
- Обработка нуля: если b == 0, выбрасываем ValueError с объяснением, что делить на ноль нельзя.
- Деление: возвращаем результат a / b.
- Результат: возвращается число (обычно float).
Код (Python)
def divide_numbers(a, b): """ Делит a на b и возвращает результат. При делении на ноль поднимает ValueError. """ # Проверка типов аргументов if not isinstance(a, (int, float)) or not isinstance(b, (int, float)): raise TypeError("Ожидаются числовые аргументы (int или float).") # Обработка деления на ноль if b == 0: raise ValueError("Деление на ноль недопустимо.") # Собственно деление return a / b
Примеры использования
- divide_numbers(10, 2) возвращает 5.0
- divide_numbers(7, 3) возвращает примерно 2.3333333333333335
- divide_numbers(5, 0) вызывает ValueError: Деление на ноль недопустимо.
- divide_numbers("a", 2) вызывает TypeError: Ожидаются числовые аргументы (int или float).
Дополнительные заметки
- Если нужна обработка без возбуждения исключений, можно адаптировать так, чтобы возвращать None при делении на ноль, но стандартная практика для бэкендов и учебных задач — возбуждать исключение и информировать об ошибке пользователю кода.
- Можно расширить функцию до поддержки комплексных чисел (complex) или использовать duck typing, но для средней школы обычно достаточно int/float как в приведённом примере.