Создание собственного калькулятора
Ваша задача — создать класс Number
, использующий магические методы Python (__add__
, __sub__
, __mul__
, __truediv__
) для выполнения математических операций. Кроме того, ваш класс должен быть надежным и уметь обрабатывать различные исключения, которые могут возникнуть при этих операциях:
Если будет попытка деления на ноль, должно быть вызвано исключение
ZeroDivisionError
с сообщениемCannot divide by zero
.Если любой из входных аргументов не может быть преобразован в число, должно быть вызвано исключение
ValueError
с сообщениемInvalid number input
.Если оператор не является экземпляром
Number
, должно быть вызвано исключениеTypeError
с сообщениемOperator must be a Number
.Также вам нужно реализовать собственное исключение
UnsupportedOperatorError
, которое наследуется отValueError
и имеет сообщениеUnsupported operator
. Это исключение должно вызываться, если предпринимается попытка выполнения операции, не поддерживаемой классом. К таким операциям относятся:__floordiv__
,__mod__
,__pow__
,__lshift__
,__rshift__
,__and__
,__xor__
,__or__
.
Все поддерживаемые магические методы должны возвращать объект Number
.
Примечание: Не забудьте реализовать магический метод __str__
, чтобы возвращать значение Number
.
Ввод | Вывод |
| 12 |
| Cannot divide by zero |
| Invalid number input |
| Unsupported operator |
| Operator must be a Number |
| 20 |
| Unsupported operator |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB