Функция возвращает str(a / b), а при ошибке — имя класса исключения. В примере условия опечатка: 5 / 2 равно 2.5, а не 5.0.
Дописать функцию division, которая будет принимать на вход 2 целых числа, а возвращать результат деления первого числа на второе в виде строки (прим.: 5/2 = '5.0')
Функция возвращает str(a / b), а при ошибке — имя класса исключения. В примере условия опечатка: 5 / 2 равно 2.5, а не 5.0.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дописать функцию division, которая будет принимать на вход 2 целых числа, а возвращать результат деления первого числа на второе в виде строки (прим.: 5/2 = '5.0') Если поймали исключение, то надо вернуть строку - название исключения, (прим. ввели входные данные неверного типа - 'TypeError')
def division(a: int, b: int) -> str:
Ответ
Функция возвращает str(a / b), а при ошибке — имя класса исключения. В примере условия опечатка: 5 / 2 равно 2.5, а не 5.0.
Аннотации не проверяют типы автоматически, поэтому для строгого требования целых чисел проверку добавляют явно:
def division(a: int, b: int) -> str:
try:
if type(a) is not int or type(b) is not int:
raise TypeError
return str(a / b)
except Exception as exc:
return type(exc).__name__
division(5, 2) вернёт '2.5', division(5, 0) — 'ZeroDivisionError', а строковый аргумент — 'TypeError'. Здесь bool намеренно не считается допустимым целым. Широкий перехват выбран под учебный контракт возврата имени ошибки.