TypeError: 'str' object does not support item assignment (Передача аргументов)
появилась у меня проблема делал вот зашифровку букв в массиве, но вылезла ошибка. В названии темы.
Как мне можно исправить ошибку?
Words = ["Шифрование", "Оранжевый", "Программирование"]
def encrypt_word(string, x):
string[x] = string[x].replace('и', '*').replace('о','*').replace('а', '*'). replace('р', '*').replace('е', '*').replace('я', '*').replace('к', '*'). replace('т', '*').replace('ь', '*').replace('ъ', '*')
return string[x]
def encrypt_range():
for y in range(0, max_second):
encrypt_word(Words[y], y)
Ответы (3 шт):
Автор решения: Tehnorobot
→ Ссылка
Я не очень понял реализацию требований автора в коде, но, думаю, что это автору поможет:
Замените string[x] = string[x].replace(...) на string = string.replace(...)
Words = ["Шифрование", "Оранжевый", "Программирование"]
def encrypt_word(string, x):
string = string.replace('и', '*').replace('о','*').replace('а', '*').replace('р', '*').replace('е', '*').replace('я', '*').replace('к', '*').replace('т', '*').replace('ь', '*').replace('ъ', '*')
return string
def encrypt_range():
for y in range(len(Words)):
print(encrypt_word(Words[y], y))
encrypt_range()
Вывод:
Ш*ф**в*н**
О**нж*вый
П**г**мм***в*н**
Автор решения: dark_buckwheat
→ Ссылка
insolor правильно сказал. Символы строки нельзя так просто изменить. Если вам нужно заменить элемент с индексом x, то, думаю, такой код подойдёт:
a = 'abcd'
x = 1
a = a[:x] + '1' + a[x + 1:]
print(a)
Автор решения: Namerek
→ Ссылка
words = ["Шифрование", "Оранжевый", "Программирование"]
def encrypt_word(string):
enc = {
'и': '*',
'о': '*',
'а': '*',
'р': '*',
'е': '*',
'я': '*',
'к': '*',
'т': '*',
'т': '*',
'ь': '*',
'ъ': '*'
}
return ''.join(enc.get(x, x) for x in string)
print(*map(encrypt_word, words), sep='\n')
# Ш*ф**в*н**
# О**нж*вый
# П**г**мм***в*н**