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
を発生させるべきです。
入力 | 出力 |
---|---|
| 5 / 6 |
| 1 / 6 |
| 1 / 6 |
| 3 / 2 |
| ZeroDivisionError: You can't divide by zero! |
| ValueError: The denominator cannot be zero! |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB