【问题标题】:Using staticmethod to calculate fractions使用静态方法计算分数
【发布时间】:2021-03-24 15:44:50
【问题描述】:

我正在执行一项任务,其中我有一个分数类,其中包含有关如何对分数进行加、减、乘和除的函数。我在创建将添加 2 个分数的 add 函数时遇到问题,并且此函数必须 使用静态方法。这是我目前写的代码:

class Fraction:
    def __init__(self,num1=0,num2=0):
        self.num1=num1
        self.num2=num2
    def __str__(self):
        while self.num1>self.num2:
            a = self.num1//self.num2
            b = self.num1 % self.num2
            if self.num2==1:
                return "%s"%(self.num1)
            elif self.num1 % self.num2==0:
                return  "%s"%(self.num1/self.num2)
            else:
                return "%s+%s|%s"%(a,b,self.num2)
        if self.num1==0:
            return "0"
        elif self.num1 or self.num2 < 0 and self.num1==self.num2:
            return "-1"
        elif self.num2==1:
            return "%s"%(self.num1)
        elif self.num1==self.num2:
            return "1"
        else:    
            return "%s|%s"%(self.num1,self.num2)
    
    @staticmethod
    def add(a,b):
        a=Fraction(n,d)
        b=Fraction(num,den) 
        if a.d == b.den and a.n<a.d or b.num<b.den:
            return "%s|%s"%(a.n+b.num,a.d)
        elif a.d != b.den:
            return "%s|%s"%((a.n*b.den)+(a.d*b.num),(a.d*b.den))

我在添加功能中遇到麻烦,我不知道如何使该功能工作。 例如:

Fraction.add(Fraction(1,4),Fraction(2,4))
>>> 3|4
Fraction.add(Fraction(1,5),Fraction(6,7))
>>> 1 + 2|35

这就是输出的样子。谁能指导我完成添加功能以及如何使用静态方法改进它

【问题讨论】:

  • Fraction.addab 中已经是Fraction 对象。为什么要用新值覆盖它们?

标签: python python-3.x list python-requests


【解决方案1】:

如果参数 a 和 b 已经是 Fraction 对象,那么您可以直接在方法中使用它们的属性:

@staticmethod
def add(a,b):
    if a.num2 == b.num2 and (a.num1 < a.num2 or b.num1 < b.num2):
        return "%s|%s"%(a.num1 + b.num1, a.num2)
    elif a.num2 != b.num2:
        return "%s|%s"%((a.num1 * b.num2) + (a.num2 * b.num1), (a.num2 * b.num2))

第一个 if 子句中还缺少括号。

【讨论】:

    猜你喜欢
    • 2013-11-29
    • 2011-02-19
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多