Страницы

Поиск по вопросам

четверг, 16 мая 2019 г.

Перезапись строки с помощью другой строки, используя цикл for: TypeError: 'str' object does not support item assignment

Необходимо перезаписать строку используя ключ. В одном из вопросов находил решение по перезаписи необходимой строки, однако и такой метод выдает ошибку.
Как я мог бы, используя Питон, перезаписать строку 'splaintext' с помощью 'key'?
key является аргументом командной строки - argv[1] (строка) splaintext - строка, вводимая пользователем
В итоге, если:
splaintext` = 'hello' key = 'abc'
результатом будет: 'abcab'
Код:
for i in range(len(splaintext)): for j in range(len(key)): if i == len(splaintext): break else: while True: symbol = key[j] splaintext[i] = splaintext[:i] + symbol + splaintext[i+1:] i = i + 1 j = j + 1 if j == len(key): j = 0 elif i == len(splaintext): break
Ошибка:
splaintext[i] = splaintext[:i] + symbol + splaintext[i+1:]
TypeError: 'str' object does not support item assignment


Ответ

Воспользуйтесь itertools.cycle()
from itertools import cycle
cycle_gen = cycle(key)
res = ''.join([next(cycle_gen) for _ in splaintext])
print(res)

Вывод:
abcab

Комментариев нет:

Отправить комментарий