如何将整数与分数相加

2024-06-02 05:44:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着自己写一个班级分数。我现在写了一些东西,为表达式提供输出,比如:分数(1,2)+分数(2,1)。但是,我如何定义加法,以便我可以将整数添加到分数中,例如:1+分数(2,1)。这是我对加法的定义:

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

Tags: selfaddreturn定义表达式def整数argument
3条回答

您需要使用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

我会制作另一个函数,将整数转换成分数,如果您需要帮助,我可以帮助您编写代码

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

相关问题 更多 >