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 message Cannot divide by zero.
  • Si l'une des entrées ne peut pas être convertie en nombre, une ValueError doit être levée avec le message Invalid number input.
  • Si l'opérateur n'est pas un Number, une TypeError doit être levée avec le message Operator must be a Number.
  • De plus, vous devez implémenter une exception personnalisée, UnsupportedOperatorError, qui hérite de ValueError, avec le message Unsupported 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

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