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())
   

Ответы (0 шт):