Créer une Calculatrice Personnalisée
Votre tâche consiste à créer une classe
Number
qui utilise les méthodes magiques de Python (__add__
, __sub__
, __mul__
, __truediv__
) pour effectuer des opérations mathématiques. Cependant, la classe doit être robuste et capable de gérer diverses exceptions pouvant survenir lors de ces opérations :- Si une division par zéro est tentée, une
ZeroDivisionError
doit être levée avec le messageCannot divide by zero
.
- Si l'une des entrées ne peut pas être convertie en nombre, une
ValueError
doit être levée avec le messageInvalid number input
.
- Si l'opérateur n'est pas un
Number
, uneTypeError
doit être levée avec le messageOperator must be a Number
.
- De plus, vous devez implémenter une exception personnalisée,
UnsupportedOperatorError
, qui hérite deValueError
, avec le messageUnsupported operator
. Cette erreur doit être levée si une opération non prise en charge par la classe est tentée. Cela inclut__floordiv__
,__mod__
,__pow__
,__lshift__
,__rshift__
,__and__
,__xor__
,__or__
.
Toutes les méthodes magiques valides doivent retourner un objet
Number
.Note : N'oubliez pas d'implémenter la méthode magique
__str__
pour retourner la valeur du Number
.Input | Output |
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