gratiani
Что нужно сделать, чтобы при каждом обращении к методу точка конкатенировала только с текущим строковым символом
Используй отладку (выводи на экран промежуточные знанения). Тогда будешь понимать, что происходит на каждом шаге цикла.
>>> word = 'spamspamspam'
>>> for x in word:
... word = word.replace(x, '.' + x)
... print(x, word)
...
s .spam.spam.spam
p .s.pam.s.pam.s.pam
a .s.p.am.s.p.am.s.p.am
m .s.p.a.m.s.p.a.m.s.p.a.m
s ..s.p.a.m..s.p.a.m..s.p.a.m
p ..s..p.a.m..s..p.a.m..s..p.a.m
a ..s..p..a.m..s..p..a.m..s..p..a.m
m ..s..p..a..m..s..p..a..m..s..p..a..m
s ...s..p..a..m...s..p..a..m...s..p..a..m
p ...s...p..a..m...s...p..a..m...s...p..a..m
a ...s...p...a..m...s...p...a..m...s...p...a..m
m ...s...p...a...m...s...p...a...m...s...p...a...m
>>> print(word)
...s...p...a...m...s...p...a...m...s...p...a...m
>>>
Написана какая-то запутанная хрень, а видно это только при отладке.
Вот при отладке видно, что на четвёртом шаге получается нужная строка.
Добавляешь ограничитель на количество шагов
>>> word = 'spamspamspam'
>>> for x, _ in zip(word, range(4)):
... word = word.replace(x, '.' + x)
... print(x, word)
...
s .spam.spam.spam
p .s.pam.s.pam.s.pam
a .s.p.am.s.p.am.s.p.am
m .s.p.a.m.s.p.a.m.s.p.a.m
>>> print(word)
.s.p.a.m.s.p.a.m.s.p.a.m
>>>
Когда всё готово, отладку убираешь
>>> word = 'spamspamspam'
>>> for x, _ in zip(word, range(4)):
... word = word.replace(x, '.' + x)
...
>>> print(word)
.s.p.a.m.s.p.a.m.s.p.a.m
>>>
Вот так можешь сделать
>>> word = 'spamspamspam'
>>> word = '.' + '.'.join(word)
>>> print(word)
.s.p.a.m.s.p.a.m.s.p.a.m
>>>
Вот так можешь сделать
>>> import re
>>>
>>> word = 'spamspamspam'
>>> word = re.sub(r'.', r'.\g<0>', word)
>>> print(word)
.s.p.a.m.s.p.a.m.s.p.a.m
>>>