2017-02-11 3 views
-1

мне нужно кодировать Цезарь шифр кода для проекта в школе, и я столкнулся с ошибкой, что я не могу исправить ...проблем кодирование Цезаря шифра

Когда я Эндер ту же букву дважды не кодироваться правильно ..

Может ли кто-нибудь помочь?

вот код:

#This is a ceser code +2 

letters = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','S','Y','Z'] 
message = input('enter a message to eyncrypt in capital letters') 
message_incrypt = str() 

for x in message: 
    if x in letters: 
     x = letters.index(x) 
     x = letters.pop(x+2) 
     message_incrypt = message_incrypt + str(x) 
    else: 
     print ('you can input only capital letters') 


print (message_incrypt) 

ответ

0

Вы используете pop. Это удаляет значение из списка. ( Python docs on pop)

e.g.

arr = [1,2,3] 
arr.pop(1) 

Сделает arr быть [1,3]

Вы можете просто получить значение от индексации массива

например

arr = [1,2,3] 
val = arr[1] 

Это недоразумение наиболее заметно, когда вы делаете то же самое письмо дважды, потому что первый из них будет изменить массив, так что второй один даст другой результат.

Смежные вопросы