HELP Помогите пожалуйста найти ошибку
Нужно написать класс Fraction для работы с дробями. Пусть дробь в нашем классе предстает в виде числитель/знаменатель. Дробное число должно создаваться по запросу Fraction(a, b), где a – это числитель, а b – знаменатель дроби.
Добавить возможность сложения (сложения через оператор сложения) для дроби. Предполагается, что операция сложения может проводиться как только между дробями, так и между дробью и целым числом. Результат операции должен быть представлен в виде дроби.
Добавить возможность взятия разности (вычитания через оператор вычитания) для дробей. Предполагается, что операция вычитания может проводиться как только для двух дробей, так и для дроби и целого числа. Результат операции должен быть представлен в виде дроби.
Добавить возможность умножения (умножения через оператор умножения) для дробей. Предполагается, что операция умножения может проводиться как только для двух дробей, так и для дроби и целого числа. Результат операции должен быть представлен в виде дроби.
Добавить возможность приведения дроби к целому числу через стандартную функцию int().
Добавить возможность приведения дроби к числу с плавающей точкой через стандартную функцию float().
Создать дочерний класс OperationsOnFraction и добавьте туда собственные методы getint и getfloat, которые будут возвращать целую часть дроби и представление дроби в виде числа с плавающей точкой соответственно. Что-то не так у меня с алгоритмом и дроби не правильно выводятся.
class Fraction:
def __init__(self, a, b):
self.a = a
self.b = b
def str(self):
return str(self.a) + "/" + str(self.b)
def show(self):
print(self.a, "/", self.b, sep=" ")
def add(self, other):
if isinstance(other, int):
return Fraction(self.a + other * self.b, self.b)
if isinstance(other, Fraction):
return Fraction(self.a * other.b + other.a * self.b, self.b * other.b)
def str(self, other):
if isinstance(other, int):
return Fraction(self.a + other * self.b, self.b)
f1 = Fraction(1, 7)
f2 = Fraction(2, 3)
print(f1 + f2)
def sub(self, otherfraction):
if isinstance(otherfraction, int):
y = otherfraction * self.b - self.a
z = self.b
else:
if self.a * otherfraction.b - self.b * otherfraction.a == 0:
y = 1
z = self.b * otherfraction.b
if self.a * otherfraction.b - self.b * otherfraction.a != 0:
y = self.a * otherfraction.b - self.b * otherfraction.a
z = self.b * otherfraction.b
return Fraction(y, z)
def mul(self, otherfraction):
if isinstance(otherfraction, int):
y = otherfraction * self.a
z = self.b
else:
y = self.a * otherfraction.a
z = self.b * otherfraction.b
return Fraction(y, z)
def truediv(self, otherfraction):
if isinstance(otherfraction, int):
y = otherfraction * self.b
z = self.a
else:
y = self.a * otherfraction.b
z = self.b * otherfraction.a
return Fraction(y, z)
def int(self):
y = self.a // self.b
return y
print(y)
def float(self):
y =self.a / self.b
return y
print(y)
class OperationsOnFraction(Fraction):
def getint(self):
return int(self)
def getfloat(self):
return float(self)
a = int(input("Введите числитель 1 дроби: "))
b = int(input("Введите знаминатель 1 дроби: "))
rezult_1 = Fraction(a, b)
print(rezult_1)
ac_2 = int(input("Введите числитель 2 дроби: "))
bd_2 = int(input("Введите знаминатель 2 дроби: "))
rezult_2 = Fraction(ac_2, bd_2)
print(rezult_2)
slog = rezult_1 + 7
print("сложение: " , slog)
vicht = rezult_1 - 6
print("вычитание: ", vicht)
ymnog = rezult_1 * 8
print("умножение: ", ymnog)
delen = rezult_1 / 6
print("деление: ", delen)
print("целое число: ",int(rezult_1))
print("обыкновенная дробь: ",float(rezult_1))
ac_3 = int(input("Введите числитель 3 дроби: "))
bd_3 = int(input("Введите знаминатель 3 дроби: "))
rezult_3 = OperationsOnFraction(ac_3,bd_3)
print(rezult_3.getint())
print(rezult_3.getfloat())