Создание шифровальной функции Цезаря с восклицательным знаком

Может кто-нибудь, пожалуйста, помогите мне сделать функцию, которая шифрует данное сообщение, которое содержит восклицательный знак в сообщении. Например: как! Привет. На данный момент вывод моей функции для (HOWDY! Hello.)

Your translated text is:
MTBIDEEMJQQTE

когда это действительно должно быть:

Your translated text is:
MTBID! Mello.

Мой полный код:

alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
message = ""
encryptedmessage = " "
keynumber = 0

def encrypt():
 global message
 global encryptedmessage
 global keynumber
 print()
 print()
 message = str(input("Enter your message:"))
 print()
 print()
 keynumber = int(input("Enter the key number (1-26)"))
 print()
 print()
 for i in message:
  position = alphabet.find(i)
  newposition = (position+5)%26
  encryptedmessage +=alphabet[newposition]
 print("Your translated text is:")
 print(encryptedmessage)


def decrypt():
 global message
 global encryptedmessage
 global keynumber
 message = str(input("Enter your message:"))
 keynumber = int(input("Enter the key number (1-26)"))


action = input("Do you wish to encrypt or decrypt a message?")

if action == "encrypt":
 encrypt()
if action == "decrypt":
 decrypt()

1 ответ

Решение

alphabet.find(i) будет -1 если i не в alphabet, Когда это произойдет, вы должны просто скопировать i в зашифрованное сообщение вместо того, чтобы его кодировать.

position = alphabet.find(i)
if position == -1:
    encryptedmessage += i
else:
    newPosition = (position + 5) % 26
    encryptedmessage += alphabet[newPosition]
Другие вопросы по тегам