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