Python分数四则运算

题目描述
对输入的两个分数进行+、-、*、/四则运算,输出最简分数结果,
最简结果要求分母和分子互质(没有除1之外的公因子)。

输入格式
分数表达式: a/b运算符c/d 。

输出格式
带结果的分数运算表达式

输入输出样例
输入1
1/2+1/4

输出1
1/2+1/4=3/4

输入2
1/4/1/2
输出2
1/4/1/2=1/2

这题有好几个陷阱,请测试一下这个:

import re
from fractions import Fraction
 
f = input()
a = re.findall(r'(\d+)/(\d+)(.)(\d+)/(\d+)',f)

f1 = Fraction(int(a[0][0]), int(a[0][1]))
f2 = Fraction(int(a[0][3]), int(a[0][4]))
if a[0][2] == '+':
    res=f1+f2
elif a[0][2] == '-':
    res=f1-f2
elif a[0][2] == '*':
    res=f1*f2
else:
    res=f1/f2
if int(res)==res:res=str(res)+'/1'

print(f'{a[0][0]}/{a[0][1]}{a[0][2]}{a[0][3]}/{a[0][4]}={res}')
import fractions
lst = input()
#print(lst.split('/')[1].split('+'))
f1 = fractions.Fraction(int(lst.split('/')[0]), int(lst.split('/')[1][0]))
f2 = fractions.Fraction(int(lst.split('/')[1][2]), int(lst.split('/')[2]))
if '+' in  lst:
    print('{} + {} = {}'.format(f1, f2, f1 + f2))
elif '-' in  lst:
    print('{} - {} = {}'.format(f1, f2, f1 - f2))
elif '*' in  lst:
    print('{} * {} = {}'.format(f1, f2, f1 * f2))
else:
    print('{} / {} = {}'.format(f1, f2, f1 / f2))


from  fractions import Fraction

s = input(">>>")
if len(s) - len(s.replace("/", "")) == 3:    
    p = s.find('/', s.find('/') + 1)
    snew = f"({s[:p]}){s[p]}({s[p+1:]})"
else:
    snew = s

e = f"{s} = {Fraction(eval(snew))}"
print(e)