Как поменять местами предметы в списке питонов? - PullRequest
0 голосов
/ 22 ноября 2018

Текст разбит на группы по семь букв.Каждая группа шифруется с помощью ключа 6015423 (буква с индексом 0 на индекс 6, буква с индексом 1 на индекс 0, буква с индексом 2 на индекс 1...).

Вместо правильного слова «змей» (пробовал только с первой семибуквенной группой, такая же проблема возникает, когда %7 пропущен), мой код дает ложный результат, начиная с индекса 4: serpsne.

В чем ошибка?

list=['e','r','n','t','e','p','s']
clear=[]
for x in list:    
    if list.index(x)%7==0:
        a=list[list.index(x)+6]
    elif list.index(x)%7==1:
        a=list[list.index(x)-1]
    elif list.index(x)%7==2:
        a=list[list.index(x)-1]
    elif list.index(x)%7==3:
        a=list[list.index(x)+2]
    elif list.index(x)%7==4:
        a=x
    elif list.index(x)%7==5:
        a=list[list.index(x)-3]
    else:               
        a=list[list.index(x)-6]
    clear.append(a)
clear=''.join(clear)
print(clear)

(Не знаю, почему в это поле вставляются две пустые строки после for, иначе в моем коде нет пустых строк.)

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Поскольку list.index ('e') всегда равен 0.

Он найдет индекс первого вхождения 'e', ​​а не второго, и, следовательно, никогда не выполнит это:

elif list.index(x)%7==4:
    a=x

Попробуйте запустить этот код:

list=['e','r','n','t','e','p','s']
for x in list:
print ( list.index(x))

Вы получите 0123056 вместо 0123456

0 голосов
/ 22 ноября 2018

Не уверен, почему ты так много делаешь!Попробуйте это ниже:

lst=['e','r','n','t','e','p','s']
clear=[]
key='6015423'
for x in key:
    clear.append(lst[int(x)])

clear=''.join(clear)
print(clear)
...