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 արգումենտն ունի զրո համարիչ, այս մեթոդը պետք է raise անիZeroDivisionError
:
__str__
: Այս մեթոդը պետք է տպի կոտորակըnumerator / denominator
(համարիչ / հայտարար) ձևաչափով: Մեթոդը պետք է վերադարձնի կոտորակի տողային ներկայացումը իր ամենապարզ ձևով (օրինակ՝ "2 / 3"՝ "4 / 6"-ի փոխարեն): Կոտորակը պարզեցնելու համար համարիչը և հայտարարը բաժանեք նրանց ամենամեծ ընդհանուր բաժանարարի (GCD):
Fraction կլասը պետք է կարողանա սկզբնավորվել երկու պարամետրով՝
numerator
(համարիչով) և denominator
(հայտարարով): Երկու պարամետրերն էլ պետք է լինեն ամբողջ թվեր, իսկ հայտարարը(denominator
) պետք է լինի 1
, եթե այն տրված չէ: Եթե հայտարարը 0 է, ծրագիրը պետք է raise անի ValueError
__init__
մեթոդում:Մուտք | Ելք |
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: 0.2 seconds
Memory limit: 512 MB
Output limit: 1 MB