Fraction クラス

あなたはシンプルな電卓を開発しています。数学的な分数を表すPythonクラスFractionを作成することがあなたの課題です。
このクラスは5つのマジックメソッドを持つ必要があります:
  • __add__: このメソッドは他のFractionオブジェクトを引数として受け取り、元のFractionと引数のFractionの合計である新しいFractionオブジェクトを返します。
  • __sub__: このメソッドは他のFractionオブジェクトを引数として受け取り、元のFractionから引数のFractionを引いた結果である新しいFractionオブジェクトを返します。
  • __mul__: このメソッドは他のFractionオブジェクトを引数として受け取り、元のFractionと引数のFractionを掛けた結果である新しいFractionオブジェクトを返します。
  • __truediv__: このメソッドは他のFractionオブジェクトを引数として受け取り、元のFractionを引数のFractionで割った結果である新しいFractionオブジェクトを返します。もし引数のFractionの分子がゼロの場合、このメソッドはZeroDivisionErrorを発生させるべきです。
  • __str__: このメソッドはnumerator / denominatorの形式で分数を返します。分数を最も簡単な形(例えば "4 / 6" ではなく "2 / 3")で文字列として返すべきです。分数を簡単にするには、分子と分母をそれらの最大公約数(GCD)で割ります。
Fractionクラスはnumeratordenominatorの2つのパラメータでインスタンス化できる必要があります。両方のパラメータは整数で、denominatorは指定されない場合デフォルトで1になります。もし分母が0の場合、__init__メソッドでValueErrorを発生させるべきです。
入力
出力
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1+f2; print(f3)
5 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1-f2; print(f3)
1 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1 * f2; print(f3)
1 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1 / f2; print(f3)
3 / 2
f1 = Fraction(1, 2); f2 = Fraction(0, 3); f3 = f1 / f2; print(f3)
ZeroDivisionError: You can't divide by zero!
f1 = Fraction(1, 0);
ValueError: The denominator cannot be zero!
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

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