Skip to content

Instantly share code, notes, and snippets.

@dimnikolos
Created December 28, 2020 11:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dimnikolos/6fa1184af1e5191dcd188d62f9eadbda to your computer and use it in GitHub Desktop.
Save dimnikolos/6fa1184af1e5191dcd188d62f9eadbda to your computer and use it in GitHub Desktop.
from fractions import Fraction
def fromrepeating(r):
if type(r) == int:
return(Fraction(r,1))
if type(r) == float:
return(Fraction(int(str(r).replace('.','')),10**(len(str(r))-str(r).index('.')-1)))
if type(r) != str:
return(None)
if 'r' not in r:
try:
r = float(r)
return(Fraction(int(str(r).replace('.','')),10**(len(str(r))-str(r).index('.')-1)))
except ValueError:
return(None)
num,period=r.split('r')
period = int(period)
nr = num[:-period] #notrepeating
nrf = Fraction(int(nr.replace('.','')),10**(len(nr)-nr.index('.')-1))
rfnom = int(num[-period:])
rfdenom = (10**(period)-1)*10**(len(nr)-nr.index('.')-1)
return(nrf+Fraction(rfnom,rfdenom))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment