Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2014
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import re
  2. #Здесь ищем все итерации максимально длинной повторяющейся последовательности символов(всех, кроме новой строки)
  3. rx = re.compile(r"(.+?)\1+")
  4.  
  5. def as_periodic(result):
  6.     as_str = str(result)
  7. # если нет повтора, то просто возвращаем стрингу, если есть - возвращаем первый элемент из rx, который является, по сути, периодом
  8.     try:
  9.         period = rx.findall(as_str)[0]
  10.     except IndexError:
  11.         return as_str
  12. #функция продолжается, esle опционален, но нужен для аккуратности
  13.     else:
  14. #находим в стринге период, возвращаем все слева от неё как постоянную часть
  15.         const_part = as_str[:as_str.find(period)]
  16.         return '%s(%s)' % (const_part, period)
  17.  
  18.  
  19. as_periodic(1.0 / 3)
  20. as_periodic(1.0 / 13)
  21. as_periodic(1.0 / 2)
  22.  
  23. -------------------------- out:
  24. '0.(3)'
  25. '0.(076923)'
  26. '0.5'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement