python设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。 这个类的构造方法是: 构造一个a/b的分数:def __init__(self, a, b); 这个类要提供以下的功能: 将分数转换为float:def toFloat(self); 将自己的分数和r的分数相加,产生一个新的Fraction的对象:def plus(self, r); 将自己的分数和r的分数相乘,产生一个新的Fraction的对象:def multiply(self, r); 将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出:def printFraction(self); 创建和做完运算后应该化简分数为最简形式。如2/4应该被化简为1/2。
时间: 2024-02-09 13:12:14 浏览: 138
以下是实现Fraction类的Python代码:
```python
class Fraction:
def __init__(self, a, b):
gcd = self.__gcd(a, b)
self.__numerator = a // gcd
self.__denominator = b // gcd
def toFloat(self):
return self.__numerator / self.__denominator
def plus(self, r):
a = self.__numerator * r.__denominator + self.__denominator * r.__numerator
b = self.__denominator * r.__denominator
return Fraction(a, b)
def multiply(self, r):
a = self.__numerator * r.__numerator
b = self.__denominator * r.__denominator
return Fraction(a, b)
def printFraction(self):
if self.__numerator == self.__denominator:
print("1")
elif self.__numerator > self.__denominator:
print("{}/{}".format(self.__numerator, self.__denominator))
else:
gcd = self.__gcd(self.__numerator, self.__denominator)
print("{}/{}".format(self.__numerator // gcd, self.__denominator // gcd))
def __gcd(self, a, b):
if b == 0:
return a
else:
return self.__gcd(b, a % b)
```
其中,`__init__()` 方法中,首先通过公约数将分数化简为最简形式;`toFloat()` 方法直接将分数转换为浮点数;`plus()` 方法将两个分数相加,返回一个新的 Fraction 对象,同样需要将结果化简为最简形式;`multiply()` 方法将两个分数相乘,返回一个新的 Fraction 对象,同样需要将结果化简为最简形式;`printFraction()` 方法将分数以“分子/分母”的形式输出,需要特别处理分子等于分母和分子大于分母的情况;`__gcd()` 方法是一个私有方法,用于求两个整数的最大公约数。
以下是一个示例,展示如何使用 Fraction 类:
```python
a, b = map(int, input().split())
c, d = map(int, input().split())
x = Fraction(a, b)
y = Fraction(c, d)
z = x.plus(y)
z.printFraction()
w = x.multiply(y)
w.printFraction()
```
阅读全文