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
クラスはnumerator
とdenominator
の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