3创建一个名为RationalNumber的类使其具有以下功能:1创建一个构造函数它可以避免分母为0对不是最简分数的分数进行约化2重载类的关系运算符和赋值运算符
3实现加减乘除四则运算,同时要求结果为最简分数形式
代码实现如下:
class RationalNumber: def init(self, numerator, denominator): if denominator == 0: raise ValueError("Denominator cannot be zero") gcd_num = self.gcd(numerator, denominator) self.numerator = numerator // gcd_num self.denominator = denominator // gcd_num
def __str__(self):
return str(self.numerator) + "/" + str(self.denominator)
def __eq__(self, other):
if isinstance(other, RationalNumber):
return self.numerator == other.numerator and self.denominator == other.denominator
return False
def __lt__(self, other):
if isinstance(other, RationalNumber):
return self.numerator * other.denominator < other.numerator * self.denominator
return False
def __gt__(self, other):
if isinstance(other, RationalNumber):
return self.numerator * other.denominator > other.numerator * self.denominator
return False
def __le__(self, other):
if isinstance(other, RationalNumber):
return self.numerator * other.denominator <= other.numerator * self.denominator
return False
def __ge__(self, other):
if isinstance(other, RationalNumber):
return self.numerator * other.denominator >= other.numerator * self.denominator
return False
def __add__(self, other):
if isinstance(other, RationalNumber):
new_num = self.numerator * other.denominator + other.numerator * self.denominator
new_denom = self.denominator * other.denominator
return RationalNumber(new_num, new_denom)
return None
def __sub__(self, other):
if isinstance(other, RationalNumber):
new_num = self.numerator * other.denominator - other.numerator * self.denominator
new_denom = self.denominator * other.denominator
return RationalNumber(new_num, new_denom)
return None
def __mul__(self, other):
if isinstance(other, RationalNumber):
new_num = self.numerator * other.numerator
new_denom = self.denominator * other.denominator
return RationalNumber(new_num, new_denom)
return None
def __truediv__(self, other):
if isinstance(other, RationalNumber) and other.numerator != 0:
new_num = self.numerator * other.denominator
new_denom = self.denominator * other.numerator
return RationalNumber(new_num, new_denom)
return None
def __iadd__(self, other):
if isinstance(other, RationalNumber):
new_num = self.numerator * other.denominator + other.numerator * self.denominator
new_denom = self.denominator * other.denominator
self.numerator = new_num
self.denominator = new_denom
return self
return None
def __isub__(self, other):
if isinstance(other, RationalNumber):
new_num = self.numerator * other.denominator - other.numerator * self.denominator
new_denom = self.denominator * other.denominator
self.numerator = new_num
self.denominator = new_denom
return self
return None
def __imul__(self, other):
if isinstance(other, RationalNumber):
new_num = self.numerator * other.numerator
new_denom = self.denominator * other.denominator
self.numerator = new_num
self.denominator = new_denom
return self
return None
def __itruediv__(self, other):
if isinstance(other, RationalNumber) and other.numerator != 0:
new_num = self.numerator * other.denominator
new_denom = self.denominator * other.numerator
self.numerator = new_num
self.denominator = new_denom
return self
return None
@staticmethod
def gcd(a, b):
if b == 0:
return a
return RationalNumber.gcd(b, a % b
原文地址: https://www.cveoy.top/t/topic/fIMW 著作权归作者所有。请勿转载和采集!