Creando una Calculadora Personalizada
Tu tarea es crear una clase
Number
que utilice los métodos mágicos de Python (__add__
, __sub__
, __mul__
, __truediv__
) para realizar operaciones matemáticas. Sin embargo, la clase debe ser robusta y ser capaz de manejar varias excepciones que pueden ocurrir durante estas operaciones:- Si se intenta una división por cero, se debe generar un
ZeroDivisionError
con el mensajeCannot divide by zero
.
- Si alguna de las entradas no puede convertirse a un número, se debe generar un
ValueError
con el mensajeInvalid number input
.
- Si el operador no es un
Number
, se debe generar unTypeError
con el mensajeOperator must be a Number
.
- Además, debes implementar una excepción personalizada,
UnsupportedOperatorError
, que herede deValueError
, con el mensajeUnsupported operator
. Este error debe generarse si se intenta una operación que no es soportada por la clase. Esto incluye__floordiv__
,__mod__
,__pow__
,__lshift__
,__rshift__
,__and__
,__xor__
,__or__
.
Todos los métodos mágicos válidos deben devolver un objeto
Number
.Nota: No olvides implementar el método mágico
__str__
para retornar el valor de Number
.Entrada | Salida |
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