Общий принцип такой
>>> def add_point(text, pos):
... lst = list(text)
... lst.insert(pos, '.')
... out = ''.join(lst)
... return out
...
>>>
>>> word = 'python'
>>>
>>> for i in range(len(word) - 1):
... res = add_point(word, i + 1)
... print(res)
...
p.ython
py.thon
pyt.hon
pyth.on
pytho.n
>>>
А если конкретно, то тебе надо взять все возможные позиции в строке и составить комбинации этих позиций. Потом уже, когда комбинации позиций готовы, ты перебираешь эти комбинации по очереди и применяешь к ним функцию вставки точки в строку в каждую из позиций текущей комбинации.