Прошу помочь решить простейшую задачу с 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 шт):
Рассмотрим такую строку: 'aaaaaaaaaaaaaaaaaaaaaaaaa'
Что с ней сделает ваш цикл?
for char in cc[:-4]:
cc = cc.replace(char,'#')
На первой итерации он берёт первый символ 'a', и заменяет ВСЕ символы 'a' в строке на '#'. И в том числе последние четыре тоже.
То есть некорректный результат ваш код будет выдавать для любой строки, где хотя бы один из четырёх последних символов встречается до этого в строке.
Ну а как делать правильно, вам уже написал в комментарии MaxU.