Կոտորակային դաս (Fraction class)
Դուք մշակում եք պարզ հաշվիչ և ձեր խնդիրն է Python-ում ստեղծել Fraction class, որը ներկայացնում է մաթեմատիկական կոտորակը:
Class-ը պետք է ունենա 5 կախարդական մեթոդ.
__add__
- Այս մեթոդը պետք է որպես արգումենտ ընդունի մեկ այլ Fraction օբյեկտ և վերադարձնի նոր Fraction օբյեկտ, որը սկզբնական Fraction-ի և Fraction արգումենտի գումարն է:
__sub__
- Այս մեթոդը պետք է որպես արգումենտ ընդունի մեկ այլ Fraction օբյեկտ և վերադարձնի նոր Fraction օբյեկտ, որը ստանում ենք սկզբնական Fraction-ից հանելով Fraction արգումենտը:
__mul__
- Այս մեթոդը պետք է ընդունի մեկ այլ Fraction օբյեկտ որպես արգումենտ և վերադարձնի նոր Fraction օբյեկտ, որը սկզբնական Fraction-ի և Fraction արգումենտի արտադրյալի արդյունքն է:
__truediv__
- Այս մեթոդը պետք է ընդունի մեկ այլ Fraction օբյեկտ որպես արգումենտ և վերադարձնի նոր Fraction օբյեկտ, որը ստանում ենք սկզբնական Fraction-ը Fraction արգումենտի վրա բաժանելիս: Եթե Fraction արգումենտն ունի զրո համարիչ, այս մեթոդը պետք է raise անիZeroDivisionError
:
__str__
- Այս մեթոդը պետք է վերադարձնի կոտորակը՝numerator / denominator
(համարիչ / հայտարար) ձևաչափով: Մեթոդը պետք է վերադարձնի տողով գրված կոտորակը՝ իր հնարավոր ամենապարզ ձևով (օրինակ՝ «2 / 3»՝ «4 / 6»-ի փոխարեն): Կոտորակը պարզեցնելու համար համարիչը և հայտարարը բաժանեք դրանց ամենամեծ ընդհանուր բաժանարարի վրա (ԱԸԲ):
Fraction class-ը պետք է կարողանա սկզբնավորվել երկու պարամետրով՝
numerator
(համարիչով) և denominator
(հայտարարով): Երկու պարամետրերն էլ պետք է լինեն ամբողջ թվեր, իսկ հայտարարը (denominator
) պետք է լինի 1
(եթե տրված չէ): Եթե հայտարարը 0 է, ծրագիրը պետք է __init__
մեթոդում raise անի 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: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB