第三五个点是什么啊啊啊啊orz始终过不了

import re
def Cal(z,x,y):
    return z*y+x

def gcd(a,b):
    if b==0:
        return a
    return gcd(b,a%b)

def con2frac():
    global a,temp
    a=re.split(',|;|\[|\]',s)
    a.pop()
    a.remove('')
    a=list(map(int,a))
    if len(a)==1:
        print(a[0])
        return False
    temp=Cal(a[len(a)-2],1,a[len(a)-1])#numerator
    for i in range(len(a)-2,0,-1):
        a[i]=temp#取倒
        temp=Cal(a[i-1],a[i+1],a[i])
    return True

def frac2con():
    global a
    x,y=s.split('/')
#numerator分子 denominator分母
    num=int(x)/int(y)
    decimal=num-int(num)
    a.append(int(num))
    while decimal>0.0000001:
        num=1/decimal
        decimal=num-int(num)
        a.append(int(num))

while True:
    a=[]
    temp,g=0,0
    try:#有异常则返回
        s=input()
        if s[0]=='[':
            if con2frac():
                g=gcd(temp,a[1])
                print(str(temp//g)+'/'+str(a[1]//g))
        else:
            frac2con()
            if len(a)>1:
                print('['+str(a[0])+';',end='')
                for i in range(1,len(a)-1):
                    print(str(a[i])+',',end='')
                print(str(a[len(a)-1])+']')
            else:#Warning: 3/1
                print('['+str(a[0])+']')
    except:
        break

2 条评论

  • @ 2018-02-07 23:55:00

    1/1 输出 【1】

    2/1 输出 【2】

    1 输出【1】

    2 输出【2】

    【1】 输出 1

    【2】 输出 2
    考虑一下这几个点,我当时是这样的

  • @ 2017-08-13 21:19:54

    我Python学的不太好。。。我想说请加上代码块。。。不然看的不舒服。。。爱莫能助

  • 1

信息

ID
1696
难度
7
分类
其他 | 数学模拟 点击显示
标签
递交数
5142
已通过
1133
通过率
22%
被复制
3
上传者