Criando uma Calculadora Personalizada
O seu desafio é criar uma classe Number que utiliza os métodos mágicos do Python (__add__, __sub__, __mul__, __truediv__) para realizar operações matemáticas. No entanto, a classe precisa ser robusta e capaz de lidar com várias exceções que podem ocorrer durante essas operações:
Se uma divisão por zero for tentada, deve ser levantada uma
ZeroDivisionErrorcom a mensagemCannot divide by zero.Se qualquer uma das entradas não puder ser convertida em um número, deve ser levantada uma
ValueErrorcom a mensagemInvalid number input.Se o operador não for um
Number, deve ser levantada umaTypeErrorcom a mensagemOperator must be a Number.Além disso, você deve implementar uma exceção personalizada,
UnsupportedOperatorError, que herda deValueError, com a mensagemUnsupported operator. Este erro deve ser levantado se uma operação que não é suportada pela classe for tentada. Isso inclui__floordiv__,__mod__,__pow__,__lshift__,__rshift__,__and__,__xor__,__or__.
Todos os métodos mágicos válidos devem retornar um objeto Number.
Nota: Não se esqueça de implementar o método mágico __str__ para retornar o valor do Number.
Entrada | Saída |
| 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