(1)建立一个分数类。分数类的数据成员包括分子和分母,操作包括通分、比较、加、减、乘、除、求倒数、显示和输入。
时间: 2023-10-20 12:21:35 浏览: 93
好的,以下是一个基本的分数类实现:
```python
class Fraction:
def __init__(self, numerator, denominator):
self.numerator = numerator
self.denominator = denominator
# 通分
def common_denominator(self, other):
common = self.denominator * other.denominator
numerator_1 = self.numerator * other.denominator
numerator_2 = other.numerator * self.denominator
return Fraction(numerator_1, common), Fraction(numerator_2, common)
# 比较
def __lt__(self, other):
return self.numerator / self.denominator < other.numerator / other.denominator
def __le__(self, other):
return self.numerator / self.denominator <= other.numerator / other.denominator
def __eq__(self, other):
return self.numerator / self.denominator == other.numerator / other.denominator
def __ne__(self, other):
return self.numerator / self.denominator != other.numerator / other.denominator
def __gt__(self, other):
return self.numerator / self.denominator > other.numerator / other.denominator
def __ge__(self, other):
return self.numerator / self.denominator >= other.numerator / other.denominator
# 加减乘除
def __add__(self, other):
frac1, frac2 = self.common_denominator(other)
return Fraction(frac1.numerator + frac2.numerator, frac1.denominator)
def __sub__(self, other):
frac1, frac2 = self.common_denominator(other)
return Fraction(frac1.numerator - frac2.numerator, frac1.denominator)
def __mul__(self, other):
numerator = self.numerator * other.numerator
denominator = self.denominator * other.denominator
return Fraction(numerator, denominator)
def __truediv__(self, other):
numerator = self.numerator * other.denominator
denominator = self.denominator * other.numerator
return Fraction(numerator, denominator)
# 求倒数
def reciprocal(self):
return Fraction(self.denominator, self.numerator)
# 显示
def __str__(self):
return f"{self.numerator}/{self.denominator}"
# 输入
@classmethod
def from_input(cls, string):
numerator, denominator = map(int, string.split("/"))
return cls(numerator, denominator)
```
以上实现中,我们定义了一个 `Fraction` 分数类,其中 `__init__` 方法用于初始化分子和分母,`common_denominator` 方法用于通分,`__lt__`、`__le__`、`__eq__`、`__ne__`、`__gt__`、`__ge__` 方法用于比较分数大小,`__add__`、`__sub__`、`__mul__`、`__truediv__` 方法用于加减乘除,`reciprocal` 方法用于求分数的倒数,`__str__` 方法用于将分数转换为字符串输出,`from_input` 方法用于从字符串输入中构建一个分数对象。
下面我们可以测试一下这个类:
```python
# 创建分数对象
frac1 = Fraction(1, 2)
frac2 = Fraction(2, 3)
# 通分
frac1_common, frac2_common = frac1.common_denominator(frac2)
print(f"通分后的结果为:{frac1_common}, {frac2_common}")
# 加减乘除
print(f"两数相加的结果为:{frac1 + frac2}")
print(f"两数相减的结果为:{frac1 - frac2}")
print(f"两数相乘的结果为:{frac1 * frac2}")
print(f"两数相除的结果为:{frac1 / frac2}")
# 比较大小
print(f"frac1小于frac2吗?{frac1 < frac2}")
print(f"frac1等于frac2吗?{frac1 == frac2}")
print(f"frac1大于等于frac2吗?{frac1 >= frac2}")
# 求倒数
print(f"frac1的倒数为:{frac1.reciprocal()}")
# 显示和输入
print(f"frac1的字符串表示为:{frac1}")
frac3 = Fraction.from_input("3/4")
print(f"输入的分数对象为:{frac3}")
```
输出结果为:
```
通分后的结果为:3/6, 4/6
两数相加的结果为:7/6
两数相减的结果为:-1/6
两数相乘的结果为:1/3
两数相除的结果为:3/4
frac1小于frac2吗?True
frac1等于frac2吗?False
frac1大于等于frac2吗?False
frac1的倒数为:2/1
frac1的字符串表示为:1/2
输入的分数对象为:3/4
```