Создание собственного калькулятора

Ваша задача — создать класс 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.
Ввод
Вывод
a=Number(10); b=Number(2); print(a+b); print(a/b);
12 5
a=Number(10); b=Number(0); print(a/b);
Cannot divide by zero
a=Number('ten'); b=Number(2); print(a+b);
Invalid number input
a=Number(10); b=Number(2); print(a**b);
Unsupported operator
a=Number(10); b=2; print(a+b);
Operator must be a Number
a = Number(10); b = Number(2); c = Number(a * b); print(c.value)
20
a = Number(10); b = Number(2); c = Number((a - b) ** 2); print(c.value)
Unsupported operator
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue