Задать вопрос

Как сделать так чтобы массив перезаписывался?

shifr = 2
letters = ['a', 'b', 'c', 'd', 'e', 'f']
shifr_text = 'acd'
arr_shifr = []

for i in range(len(shifr_text)):
    for ii in range(len(letters)):
        if shifr_text[i] == letters[ii]:
            arr_shifr.append(letters[ii + shifr])

for k in range(len(arr_shifr)):
    print(arr_shifr[k], end="")

выводиться 'cef'
Но если в shifr поставить число больше то выдает ошибку что индекса нету как сделать так чтобы массив перезаписывался или когда конец начинался с начала
  • Вопрос задан
  • 133 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
@o5a
Для избежания выхода за пределы списка можно использовать модуль по количеству символов в списке, он "зациклит" индекс
arr_shifr.append(letters[(ii + shifr)%len(letters)])
Ответ написан
Комментировать
MinTnt
@MinTnt
Во первых, для поставленной задачи лучше подойдёт словарь, чем поданный в условии цикл.
letters = {'a': 'c', 'b': 'd', 'c': 'e', 'd': 'f', 'e': 'a', 'f': 'b'}

А для создания нового списка с соответствующими значениями можно
arr_shifr = [letters[i] for i in shifr_text]
Ответ написан
Комментировать
@NicolayChe
Римский шифр делается:
1-й вариант- с проверкой выхода за пределы и расчетом заново, т.е. если полученный индекс больше длины алфавита, то от индекса отнимается длина алфавита
2-й вариант - используй двойной алфавит 'abcdefabcdef', но при этом нужно использовать break для for iii
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽