Erstellen eines benutzerdefinierten Taschenrechners

Deine Aufgabe ist es, eine Number-Klasse zu entwickeln, die die magischen Methoden von Python (__add__, __sub__, __mul__, __truediv__) nutzt, um mathematische Operationen auszuführen. Die Klasse muss jedoch robust sein und verschiedene Ausnahmen behandeln können, die während dieser Operationen auftreten können:
  • Wenn eine Division durch Null versucht wird, sollte ein ZeroDivisionError mit der Meldung Cannot divide by zero ausgelöst werden.
  • Wenn eine der Eingaben nicht in eine Zahl konvertiert werden kann, sollte ein ValueError mit der Nachricht Invalid number input ausgelöst werden.
  • Wenn der Operator keine Number ist, sollte ein TypeError mit der Meldung Operator must be a Number ausgelöst werden.
  • Außerdem solltest du eine benutzerdefinierte Ausnahme UnsupportedOperatorError implementieren, die von ValueError erbt und die Meldung Unsupported operator enthält. Dieser Fehler sollte ausgelöst werden, wenn eine von der Klasse nicht unterstützte Operation versucht wird. Dazu gehören __floordiv__, __mod__, __pow__, __lshift__, __rshift__, __and__, __xor__, __or__.
Alle gültigen magischen Methoden sollten ein Number-Objekt zurückgeben.
Hinweis: Vergiss nicht, die magische Methode __str__ zu implementieren, um den Wert der Number zurückzugeben.
Eingabe
Ausgabe
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