Если число в цикле for меньше 97, то добавьте 26

#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. Я немного запутался, не могли бы вы вернуть его обратно в пример