Создание шифровальной функции Цезаря с восклицательным знаком
Может кто-нибудь, пожалуйста, помогите мне сделать функцию, которая шифрует данное сообщение, которое содержит восклицательный знак в сообщении. Например: как! Привет. На данный момент вывод моей функции для (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]