有理数python_Python3PTA乙1034有理数四则运算 (完美通过版)

该博客介绍了一个Python程序,用于处理有理数的加、减、乘、除运算,包括有理数的有理化处理和避免除以零的情况。程序详细解释了每个操作的逻辑,并给出了完整代码实现。
摘要由CSDN通过智能技术生成

注意事项:

减法运算中 ,为了避免分母前出现负号的情况,在处理时,将所有负数按其绝对值处理。最后再添负号

除法运算中,0 / 0输出结果是 Inf。逻辑判断时 0 / 0容易出现bug

在判断正负的时候,别用两个数乘积来判断。因为如果这两个数过大容易出现结果溢出情况

# coding:utf-8

def Num(s):

N, k, F = 0, 0, 0

if s[0] == '-':

F = 1

s[1:] = s[-1: 0: -1]

s = s[1:]

else:

s[0:] = s[-1:: -1]

for item in s:

N += int(item) * 10 ** k

k += 1

if F == 0:

return N

else:

return (N * -1)

def GCD(a, b):

if a < b:

a, b = b, a

while b != 0:

a, b = b, a % b

return a

def Rationalized(m_a, d_a): # 有理化

flag = 0 #flag 为0表示 分子,分母同号

if (m_a < 0 and d_a > 0) or (m_a > 0 and d_a < 0):

flag = 1

if m_a

### PTA平台有理数均值计算程序运行时错误解决方案 针对PTA平台上有关有理数均值计算程序可能出现的运行时错误,以下是详细的分析与解决方案。 #### 错误原因分析 常见的运行时错误可能源于以下几个方面: - **除零异常**:当尝试处理分母为0的情况时会引发此错误。应确保所有输入的有效性,在读取数据前加入验证逻辑[^1]。 - **最大公约数(GCD)算法实现不当**:简化分数依赖于GCD函数来约简分子和分母到最简形式。如果GCD函数存在缺陷,则可能导致输出不符合题目要求的形式[^2]。 - **溢出问题**:由于涉及大整数运算(特别是乘法),可能会遇到数值超出基本类型表示范围的问题。可以考虑采用Python内置的大整型支持自动扩展精度特性[^3]。 #### 解决方法示例代码 下面提供了一段改进后的Python本代码用于解决上述提到的一些潜在问题,并实现了正确的有理数加总求平均功能: ```python from fractions import Fraction import sys def gcd(a, b): while b != 0: temp = a % b a = b b = temp return abs(a) n = int(input()) fractions_input = input().strip().split() sum_fraction = sum(Fraction(frac).limit_denominator() for frac in fractions_input) average_fraction = sum_fraction / n if average_fraction.denominator == 1: print(average_fraction.numerator) else: print("{}/{}".format(average_fraction.numerator, average_fraction.denominator)) ``` 这段代码利用了`fractions.Fraction`类来自带处理好化简工作并防止手工编写gcd带来的风险;同时也规避掉了手动解析字符串转成分数的操作失误可能性。此外还加入了对于最终结果是否需要显示为纯整数情况下的特殊判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值