Создание шифровальной функции Цезаря с восклицательным знаком - PullRequest
0 голосов
/ 24 мая 2018

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

0 голосов
/ 24 мая 2018

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

position = alphabet.find(i)
if position == -1:
    encryptedmessage += i
else:
    newPosition = (position + 5) % 26
    encryptedmessage += alphabet[newPosition]
...