Как добавить целое число к дроби - PullRequest
0 голосов
/ 26 мая 2020

Я сам пытаюсь написать класс Fraction. Теперь я написал что-то, что дает мне вывод для таких выражений, как: Fraction (1,2) + Fraction (2,1). Но как я могу определить сложение так, чтобы можно было добавить целое число к дроби, например: 1 + Fraction (2,1). Это мое определение сложения:

def __add__(self, argument_twee):
        return breuk(self.teller*argument_twee.noemer + self.noemer*argument_twee.teller, self.noemer*argument_twee.noemer) 

Ответы [ 3 ]

0 голосов
/ 26 мая 2020

Сначала проверьте тип argument_twee или, скорее, посмотрите, можете ли вы рассматривать его как Fraction.

def __add__(self, argument_twee):
    try:
        n = argument_twee.noemer
        d = argument_twee.teller
    except AttributeError:
        n = argument_twee
        d = 1

    return breuk(self.teller*n + self.noemer*d, self.noemer*n)

(Можно добавить дополнительные тесты, чтобы поймать нечисловые c аргументы.)

Это будет обрабатывать Fraction(1,2) + 1. Для обработки 1 + Fraction(1,2) вам необходимо реализовать __radd__, который (поскольку желаемое добавление является коммутативным) так же просто, как

__radd__ = __add__
0 голосов
/ 26 мая 2020

Вам нужно изменить функцию с помощью isinstance, который проверяет, является ли это int или что-то в значительной степени.

class A:
  def __add__(self,a):
    if isinstance(a,int):
      print(a)
    else:
      print("not Int")
v = A()
v + 1
v + A()

OUTPUT

1
not Int
0 голосов
/ 26 мая 2020

Я бы сделал другую функцию, которая преобразует целое число в дробь, если вам нужна помощь в написании этого кода, я мог бы вам помочь.

...