3创建一个名为RationalNumber的类使其具有以下功能:1创建一个构造函数它可以避免分母为0对不是约化性的分数进行约化并且可以避免分母为负数。 2重载类的加减乘除运算符3重载类的关系运算符和赋值运算符
class RationalNumber: def init(self, numerator, denominator): if denominator == 0: raise ValueError("Denominator cannot be zero") elif denominator < 0: numerator = -numerator denominator = -denominator gcd = self.__gcd(numerator, denominator) self.numerator = numerator // gcd self.denominator = denominator // gcd
def __gcd(self, a, b):
if b == 0:
return a
else:
return self.__gcd(b, a % b)
def __add__(self, other):
numerator = self.numerator * other.denominator + other.numerator * self.denominator
denominator = self.denominator * other.denominator
return RationalNumber(numerator, denominator)
def __sub__(self, other):
numerator = self.numerator * other.denominator - other.numerator * self.denominator
denominator = self.denominator * other.denominator
return RationalNumber(numerator, denominator)
def __mul__(self, other):
numerator = self.numerator * other.numerator
denominator = self.denominator * other.denominator
return RationalNumber(numerator, denominator)
def __truediv__(self, other):
numerator = self.numerator * other.denominator
denominator = self.denominator * other.numerator
return RationalNumber(numerator, denominator)
def __eq__(self, other):
return self.numerator == other.numerator and self.denominator == other.denominator
def __ne__(self, other):
return not self.__eq__(other)
def __lt__(self, other):
numerator1 = self.numerator * other.denominator
numerator2 = other.numerator * self.denominator
return numerator1 < numerator2
def __le__(self, other):
numerator1 = self.numerator * other.denominator
numerator2 = other.numerator * self.denominator
return numerator1 <= numerator2
def __gt__(self, other):
numerator1 = self.numerator * other.denominator
numerator2 = other.numerator * self.denominator
return numerator1 > numerator2
def __ge__(self, other):
numerator1 = self.numerator * other.denominator
numerator2 = other.numerator * self.denominator
return numerator1 >= numerator2
def __str__(self):
return str(self.numerator) + "/" + str(self.denominator)
def __repr__(self):
return "RationalNumber(" + str(self.numerator) + ", " + str(self.denominator) + ")
原文地址: https://www.cveoy.top/t/topic/fIMQ 著作权归作者所有。请勿转载和采集!