Форум сайта python.su
0
Доброго времени суток!
Есть строка, в которой необходимо заменить (скрыть) определенные символы на “*”. Мне нужно, к примеру заменить 6-ой и 11-ый символы, но почему-то заменяется и ненужные символы.
Вот код:
def hide_symbol(string): # 8, 11-15 string_list = [] for elem in string: if elem == string[6] or elem == string[11]: hidden_elem = '*' string_list.append(hidden_elem) else: string_list.append(elem) hidden_string = ''.join(string_list) return hidden_string abc = 'DS3G54R3G5HDF3G1D31' hidden_string = hide_symbol(abc) print(hidden_string)
Отредактировано philips2009 (Сен. 20, 2019 23:45:47)
Офлайн
73
меняйте по индексам а не совпадающим символам
def hide_symbol(string): # 8, 11-15 string_list = list(string) for i,_ in enumerate(string_list): if i+1 in (8, 11,15): string_list[i] = '*' return ''.join(string_list) abc = 'DS3G54R3G5HDF3G1D31' hidden_string = hide_symbol(abc) print(hidden_string)
Офлайн
72
Строка кода:
if elem == string[6] or elem == string[11]:
def hide_symbol(string): s = list(string) s[6] = '*' s[11] = '*' return ''.join(s)
Офлайн
44
def hide_symbol(strg, trgr, smbl): for i in trgr: out = '' count = 0 for j in strg: if count == i - 1: out += smbl count = 0 else: out += j count += 1 strg = out return out abc = 'DS3G54R3G5HDF3G1D31' trgr = (6, 11) smbl = '*' print(hide_symbol(abc, trgr, smbl))
DS3G5*R3G5**F3G1D*1
и вставьте ссылку на его url Отредактировано AD0DE412 (Сен. 21, 2019 10:25:10)
Офлайн
44
ramiтоже верно почему то показалось что каждый 6й и 11й символ
Правильно будет так:
def hide_symbol(string): s = list(string) s[6] = '*' s[11] = '*' return ''.join(s)
и вставьте ссылку на его url Отредактировано AD0DE412 (Сен. 21, 2019 10:41:30)
Офлайн
0
Огромное спасибо всем, после объяснения вами понял в чем моя ошибка. Всех благ!
Офлайн