【问题标题】:How to add integer to fraction如何将整数添加到分数
【发布时间】:2020-09-13 15:56:13
【问题描述】:

我正在尝试自己编写一个类 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) 

【问题讨论】:

  • 你是在问如何修改这个程序,如果argument_twee 是一个整数,我的行为是一种方式,如果它是一个分数,它的行为是另一种方式?你在做这件事的哪一部分遇到了麻烦?

标签: python add fractions


【解决方案1】:

您需要使用isinstance 修改函数,以检查其是否为 int 或其他任何东西。

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

输出

1
not Int

【讨论】:

    【解决方案2】:

    首先检查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)
    

    (可以添加额外的测试来捕获非数字参数。)

    这将处理Fraction(1,2) + 1。要处理1 + Fraction(1,2),您需要实现__radd__,它(因为所需的加法是可交换的)就像

    __radd__ = __add__
    

    【讨论】:

      【解决方案3】:

      如果您需要帮助编写我可以帮助您的代码,我会创建另一个将整数转换为分数的函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-28
        • 2018-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多