2017-02-19 2 views
0

Я пытаюсь сделать Цезарский шифр, и я пришел довольно близко. Проблема заключается в том, что мой вывод выводит только одну букву, а не всю строку, зашифрованную строкой. E - наиболее часто используемое письмо на английском языке, поэтому идея состоит в том, чтобы найти расстояние между E и наиболее часто используемой буквой на входе. И затем переместите все на это расстояние. Я новичок в python, поэтому пока не очень хорош. Большое спасибо заранее! Вот код, который я до сих пор:Сдвиговые значения во входной строке

maximum_character = unciphered_text[0] 
maximum_count = unciphered_text.count(unciphered_text[0]) 
for char in unciphered_text: 
    if char is not " ": 
     if unciphered_text.count(char) > maximum_count: 
      maximum_character = char 

print("The most frequent character used is: ", maximum_character) 

ASCII_maximum = maximum_character.lower() 
ASCII_number = ord(ASCII_maximum) 
print(ASCII_number) 

shift_distance = ord('e')-ASCII_number 
print("The shift distance is: ", shift_distance) 

def caesar_cipher(unciphered_text, shift_distance): 
    ciphered_text = "" 
    for char in unciphered_text: 
     cipher_process = ord(char)+shift_distance 
     post_translation = chr(cipher_process) 
     ciphered_text += post_translation 
     return ciphered_text 

answer = caesar_cipher(unciphered_text, shift_distance) 
print(answer) 

ответ

1

Вы misindent возвратить в caesar_cipher функции.

Переместите оператор возврата из цикла:

def caesar_cipher(unciphered_text, shift_distance): 
    ciphered_text = "" 
    for char in unciphered_text: 
     cipher_process = ord(char)+shift_distance 
     post_translation = chr(cipher_process) 
     ciphered_text += post_translation 
    return ciphered_text 
+0

Сработало! СПАСИБО БОЛЬШОЕ! Я понятия не имел, насколько трогательный питон может быть с его отступом. Как вы думаете, я мог бы улучшить свой код каким-либо другим способом или выполнить эту работу так, как есть? Еще раз спасибо. Я паниковал. – Amaranthus

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