Прошу помочь решить простейшую задачу с Codewar на замену символов в строке Python

Задача: убрать в строке все пробелы и заменить все символы кроме последних четырёх на "#".

Код:

cc = input('Enter your string please: ')
cc = cc.replace(' ', '')
for char in cc[:-4]:
    cc = cc.replace(char,'#')
print(cc)

Проблема:

Для строки до 16 символов включительно (после cc = cc.replace(' ', '')) программа работает корректно. Если символов больше, то начинаются не запрограммированные чудеса: замена символов на знак "#" идёт по своему сценарию.

Предполагаю, что дело в цикле for, но не могу найти причину.


Ответы (1 шт):

Автор решения: Xander

Рассмотрим такую строку: 'aaaaaaaaaaaaaaaaaaaaaaaaa'

Что с ней сделает ваш цикл?

for char in cc[:-4]:
    cc = cc.replace(char,'#')

На первой итерации он берёт первый символ 'a', и заменяет ВСЕ символы 'a' в строке на '#'. И в том числе последние четыре тоже.

То есть некорректный результат ваш код будет выдавать для любой строки, где хотя бы один из четырёх последних символов встречается до этого в строке.

Ну а как делать правильно, вам уже написал в комментарии MaxU.

→ Ссылка