Для очень простого c прямого решения вы можете сделать следующее:
Пример первый:
string = input() #input automatically returns a string, so there's no need for str()
y = '!' * (len(string)-5) + string[4:]print (y) #remember to print y, not string because y is the modified version of your string
И пример два
string = input()
y = "@" * 3 + string[3:6] + "@" * 3
print (y)
Для более гибкого подхода к этому подходу вы должны создать функцию. Предполагая, что вам даны позиции, в которых следует изменить строку в списке, строку и указанный c маркер для замены string[n]
, это должно быть довольно просто:
def replace_chars(string, positions, s):
new_string = []
for i in range(len(string)):
if i not in positions: #Checking if position, i, is not one of the marked positions
new_string.append(string[i])
else: #If it is a marked positions, append it with the marker, s, or more specifically '@'
new_string.append(s)
return ''.join(new_string) #Make the list a string
Это может быть записанной в функции длиной в 1-2 строки с одной строкой для циклов, но такое форматирование лучше для удобства чтения. Но если бы вы сделали это в 1-2 строчки, это выглядело бы так:
def replace_chars(string, positions, s):
new_string = [string[i] if i not in positions else s for i in range(len(string))]
return ''.join(new_string)