Страницы

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

пятница, 28 февраля 2020 г.

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

#python #циклы #for


Необходимо перезаписать строку используя ключ. В одном из вопросов находил решение
по перезаписи необходимой строки, однако и такой метод выдает ошибку. 

Как я мог бы, используя Питон, перезаписать строку '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

    


Ответы

Ответ 1



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

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

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