#python
#python
Вопрос:
Я пытаюсь создать шифр Цезаря. В настоящее время у меня есть текущий код:
import string
def code_to_encrypt():
print("This program will encode your messages using a Caesar Cipher")
print("")
key = -3
message = input("Enter the message: ")
for letter in message:
if ord(letter) > 96:
print(chr(ord(letter) key))
code_to_encrypt()
Как я могу сделать так, чтобы буквы менялись на величину ключа? Например, если число равно 96, оно должно измениться на 122.
Комментарии:
1. Что сейчас работает неправильно?
Ответ №1:
Я бы использовал отдельную функцию для выполнения сдвига
def shift(letter, num):
return chr(((ord(letter.upper()) - 65 num) % 26) 65)
например letter = shift('a', 3)
Вам также необходимо иметь сдвиг положительный 3, а не отрицательный 3 (используйте отрицательный для расшифровки)
def caesar_encrypt(text):
result = ''
for letter in text:
result = shift(letter, 3)
return result
def caesar_decrypt(text):
result = ''
for letter in text:
result = shift(letter, -3)
return result
Вывод
caesar_encrypt("plaintext")
'SODLQWHAW'
caesar_decrypt("SODLQWHAW")
'PLAINTEXT'
Комментарии:
1. Я немного запутался, не могли бы вы вернуть его обратно в пример