python——有理数均值

【问题描述】
计算N个有理数的平均值。要求定义有理数类,并定义计算有理数加法的方法。
【输入格式】
输入第一行给出正整数N(<100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整数;如果是负数,则负号一定出现在最前面。
【输出格式】
在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
【样例输入】
4
1/2 1/6 3/6 -5/10
【样例输出】
1/6

class rational():
    def __init__(self , x1 , x2 , y1 , y2):
        self.x1 = x1
        self.x2 = x2
        self.y1 = y1
        self.y2 = y2
    def add(self):
        if self.x2 == self.y2:
            k = self.x1 + self.y1#分子
            l = self.y2#分母
        else:
            a1 = self.x1 * self.y2#分子
            b1 = self.y1 * self.x2  # 分子
            a2 = self.x2 * self.y2#分母
            k = a1 + b1#分子之和
            l = a2#分母
        q = []
        q.append(k)
        q.append(l)
        return q
def huajian(k , l):
    x = k
    y = l
    while k % l != 0:  # 通过辗转相除法求得最大公约数
        k, l = l, (k % l)  # l是最大公倍数
    if x % y == 0:  # 判断分子是不是分母的倍数
        return x // y
    else:
        return str(x // l) + '/' + str(y // l)
n = int(input())
a = input().split()
x , y = [] , []
for i in a:
    c , m = i.split('/')
    x.append(int(c))#分子的集合
    y.append(int(m))#分母的集合
s = rational(x[0]  , y[0] , x[1] , y[1]).add()
for i in range(2, n):
    s = rational(s[0], s[1], x[i], y[i]).add()

print(huajian(s[0], s[1] * n))

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值