python几个数相加

输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。
不知道代码哪里有问题

n=int(input())
suoyoushu=input().split()

fenmu=1;fenzi=0;zi=0;mu=0
for i in suoyoushu:
    zi,mu=map(int,i.split('/'))
    fenmu=fenmu*mu

for j in suoyoushu:
    zi,mu=map(eval,j.split('/'))
    fenzi=fenzi+zi*fenmu/mu#因为这里出现了除法,所以原来的分子类型从整数型变成了浮点数型
    fenzi=int(fenzi)

if fenzi%fenmu==0:
    fenmu=int(fenmu);fenzi=int(fenzi)
    print(fenzi//fenmu)

elif fenzi#如果结果是真分数
    for i in range(fenzi,0,-1): 
        if fenmu%i==0 and fenzi%i==0:#如果i是分子分母的公因子,则分子分母同时除以它
            fenmu=fenmu//i
            fenzi=fenzi//i
    print(f'{fenzi}/{fenmu}')

elif fenmu#如果结果是假分数
    zhengshu=int(fenzi//fenmu)#计算整数部分
    fenzi=int(fenzi-fenmu*zhengshu)#计算分数部分
    for i in range(fenzi,0,-1):
        if fenmu%i==0 and fenzi%i==0:
            fenmu=fenmu//i
            fenzi=fenzi//i
    print(f'{zhengshu} {fenzi}/{fenmu}')

该回答引用chatgpt:
这段代码的功能是将输入的多个分数进行加法运算并化简结果,最后输出。下面是代码的详细解释:

第一行读取一个整数 n,表示输入的分数个数。
第二行读取 n 个字符串,使用空格分隔,每个字符串表示一个分数,格式为 "a/b",其中 a 和 b 都是整数。
初始化变量 fenmu 为 1,用于记录所有分数的公共分母。
依次遍历每个分数字符串,将其拆分为分子和分母,然后将分母相乘得到所有分数的公共分母 fenmu。
依次遍历每个分数字符串,将其拆分为分子和分母,并将其乘以 fenmu/mu,然后累加到变量 fenzi 中。这一步计算了所有分数的和的分子。
如果 fenzi 能够被 fenmu 整除,说明结果是整数,直接输出 fenzi/fenmu 的值。
如果 fenzi 小于 fenmu,说明结果是真分数,需要对 fenzi/fenmu 进行约分,并输出分数形式。
如果 fenmu 小于 fenzi,说明结果是假分数,需要将其转化为带分数形式,然后对分数部分进行约分,并输出带分数形式。
需要注意的是,第 5 步中的乘法运算可能会产生浮点数,因此需要在最后将 fenzi 转化为整数类型。此外,约分的实现使用了一个简单的方法,即依次枚举分子中的所有可能公因数,找到能够同时整除分子和分母的最大公因数,然后将分子分母同时除以该公因数即可。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^