独自の計算機を作成する

Pythonのマジックメソッド(__add____sub____mul____truediv__)を利用して数値演算を行うNumberクラスを作成してください。ただし、このクラスは堅牢であり、これらの演算中に発生しうるさまざまな例外を適切に処理できる必要があります。
  • ゼロによる除算が試みられた場合、Cannot divide by zeroというメッセージとともにZeroDivisionErrorを発生させてください。
  • 入力が数値に変換できない場合、Invalid number inputというメッセージとともにValueErrorを発生させてください。
  • 演算子がNumber型でない場合、Operator must be a NumberというメッセージとともにTypeErrorを発生させてください。
  • また、ValueErrorを継承したカスタム例外UnsupportedOperatorErrorを実装してください。この例外はUnsupported operatorというメッセージを持ちます。このエラーは、クラスでサポートされていない操作が試みられた場合に発生させてください。対象となるマジックメソッドは、__floordiv____mod____pow____lshift____rshift____and____xor____or__です。
有効なマジックメソッドはすべてNumberオブジェクトを返すようにしてください。
注意:Numberの値を返すために__str__マジックメソッドを実装することを忘れないでください。
入力
出力
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