Пусть рациональное число представлено в виде
class Rational:
pass
Реализовать арифметику:
def add(a, b):
...
def sub(a, b):
...
def mul(a, b):
...
def div(a, b):
...
# Возведение в целочисленную степень. power может быть отрицательным!
def power(r, power):
...
После арифметических операций результат должен приводиться к каноническому виду (числитель и знаменатель сокращаются, т.е. делятся на их наибольший общий делитель, см. задачу «Наибольший общий делитель»).
Для реализации power
можно использовать быстрое возведение в степень (см. задачу «Целая степень»).
Конструирование:
def create(numer, denom):
...
Сравнение:
# Возвращает -1 (a < b), 0 (a == b), 1 (a > b)
def compare(a, b):
...
Преобразование:
def to_int(r):
...
def to_float(r):
...
Вывод через строку:
def to_str(r):
...
Использование класса:
import rational as r
a = r.create(3, 2) # 3/2
b = r.create(1, 2) # 1/2
c = r.add(a, b) # 2
Примечание. Создать файлы:
rational.py
, в котором будет содержаться класс Rational
и все фукнции.test_rational.py
, который будет содержать тесты функций, импортированных из модуля rational
.