- 数与连分数
- 2017-08-13 17:58:40 @
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 条评论
-
fys1997 LV 6 @ 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