Python 用静态法计算分数
我在做一个任务,我有一个分数类,它包含了如何加、减、乘和除分数的函数。我在创建将添加2个分数的添加函数时遇到问题,此函数必须使用static方法。这是我到目前为止编写的代码:Python 用静态法计算分数,python,python-3.x,list,python-requests,Python,Python 3.x,List,Python Requests,我在做一个任务,我有一个分数类,它包含了如何加、减、乘和除分数的函数。我在创建将添加2个分数的添加函数时遇到问题,此函数必须使用static方法。这是我到目前为止编写的代码: class Fraction: def __init__(self,num1=0,num2=0): self.num1=num1 self.num2=num2 def __str__(self): while self.num1>self.num2:
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))
这就是输出的样子。是否有人可以指导我如何使用add函数以及如何使用staticmethod改进该函数如果参数a和b已经是分数对象,那么您可以直接在方法中使用它们的属性:
@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))
@staticmethod
def添加(a、b):
如果a.num2==b.num2和(a.num1
第一个if子句中也缺少括号。在
分数中。add
,a
和b
已经是分数
对象。为什么要用新值覆盖它们?
@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))