分数格式的四则运算,


def fun(p,q):
    while p!=q:
        if p>q:
            p -=q
        else:
            q -=p
    return p
s=input()
z1=m1=z2=m2=0
slst=[]
op=''
flag=1
if len(s.split('+'))==2:
    slst=s.split('+')
    op='+'
elif len(s.split('-'))==2:
    slst=s.split('-')
    op='-'
elif len(s.split('*'))==2:
    slst=s.split('*')
    op='*'
elif len(s.split('/'))==4:
    slst=s.split('/')
    op='/'

if op in '+-*':
    sl=slst[0].split('/')
    sr=slst[1].split('/')
    z1=sl[0]
    m1=sl[1]
    z2=sr[0]
    m2=sr[1]
else:
    z1=slst[0]
    m1=slst[1]
    z2=slst[2]
    m2=slst[3]
mm=zz=mmm=zzz=0
if op in'+-':
    mm=eval(m1+'*'+m2)
    zz=eval(z1+'*'+m2+op+z2+'*'+m1)
    if zz<0:
        flag=-1
        zz=-zz

if op in '*/':
    if op in '/':
        z2,m2=m2,z2 # 发生了改变没考虑到
    zz=eval(z1+'*'+z2)
    mm=eval(m1+'*'+m2)

if zz==0:
    mmm=0
    zzz=0
else:
    mmm=mm//fun(zz,mm)
    zzz=zz//fun(zz,mm)

print(z1+'/'+m1+op+z2+'/'+m2+'=',end='')
if zzz==0:
    print(zzz)
elif mmm==1:
    print(zzz)
else:
    print(str(flag*zzz)+'/'+str(mmm))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值