1. 题目

2. 代码
2.1 分析
题目本身不难。但是我前前后后花了2h以上。
题目需要处理的判断逻辑还是比较多的。
我通过实现一个Fraction的类来完成了题目。
关于最后一个测试点,非常有可能是类似这样的结构 。
1/2 -1/2, 这两个分数相除,分母会出现负数,所以一定要处理妥当。
否则最后一个测试点过不了。
2.2 代码
class Fraction():
# 默认分母=1,且是正数(flag=""正数,flag="-"负数)
def __init__(self, top, bottom=1):
is_positive = 1
if top*bottom < 0:
is_positive = -1
# 全都转化成正数
top, bottom = abs(top), abs(bottom)
# 分子分母化简
max_factor = gcd(top, bottom)
if bottom != 0:
# 约分
self.num = is_positive * (top//max_factor)
self.den = bottom // max_factor
else:
# 分母为0,分式没有意义
self.num = 0
self.den = 0
# 显示数据
def show(self):
num, den = self.num, self.den
# 判断是否是正数
is_positive = 1
if num*den < 0:
is_positive = -1
# 全部转化成正数
num, den =

这篇博客介绍了一个用Python编写的Fraction类,用于处理有理数的加、减、乘、除运算。博主详细解释了代码逻辑,特别是如何处理负数和分母为零的情况,并展示了AC截图以证明代码的正确性。
最低0.47元/天 解锁文章
3048





