【Python】PAT-1034 有理数四则运算

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

1. 题目

image-20210330104624510

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 = 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏2同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值