Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- #Здесь ищем все итерации максимально длинной повторяющейся последовательности символов(всех, кроме новой строки)
- rx = re.compile(r"(.+?)\1+")
- def as_periodic(result):
- as_str = str(result)
- # если нет повтора, то просто возвращаем стрингу, если есть - возвращаем первый элемент из rx, который является, по сути, периодом
- try:
- period = rx.findall(as_str)[0]
- except IndexError:
- return as_str
- #функция продолжается, esle опционален, но нужен для аккуратности
- else:
- #находим в стринге период, возвращаем все слева от неё как постоянную часть
- const_part = as_str[:as_str.find(period)]
- return '%s(%s)' % (const_part, period)
- as_periodic(1.0 / 3)
- as_periodic(1.0 / 13)
- as_periodic(1.0 / 2)
- -------------------------- out:
- '0.(3)'
- '0.(076923)'
- '0.5'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement