Итак, я пропустил класс и стараюсь выполнять работу, которую они там делали. Одной из проблем было исправление шифрования цеесера. Я считаю, что я исправил все, за исключением последней части, которая, конечно же, является частью, на которой я застрял. Это то, что у меня есть.Как определить расшифровку шифрования caeser
#Change to T to lowercase in plaintext
#add : to the end of if statement
def encrypt(plaintext, alphabet, key):
plaintext = plaintext.lower()
cipherText = ""
for ch in plaintext:
idx = alphabet.find(ch)
if idx >= 0 and idx <= 25:
cipherText = cipherText + key[idx]
else:
cipherText = cipherText + ch
#add return ciphertext
return cipherText
#add def to decrypt line
def decrypt(cipherText, alphabet, key):
plainText = ""
for ch in cipherText:
idx = key.find(ch)
#add and idx <= 25 to if statement
if idx >= 0 and idx <= 25:
plaintext = plaintext + alphabet[idx]
else:
plaintext = plaintext + ch
return plaintext
#got rid of def main
#have myCipher = encrypt
# define both myCipher and my plain to the encrypt and decrypt
alphabet = "abcdefghijklmnopqrstuvwxyz"
key = "nopqrstuvwxyzabcdefghijklm"
plaintext = input("Enter the text you want to encrypt: ")
myCipher = encrypt(plaintext, alphabet, key)
myPlain = decrypt(cipherText,alphabet, key)
print(myCipher)
print("Checking if decryption works: ")
print(myPlain)
Когда я запускаю код он говорит шифртекст, не определен в
myPlain = decrypt(cipherText,alphabet, key)
Я попытался несколько различных вариантов, но я, кажется, иду дальше от ее фиксации, чем то, что он у меня, как сейчас , Таким образом, я могу определить cipherText в этой строке или мне нужно переделать эту строку и изменить ее на что-то еще?
Это ошибка, я получаю, когда я попытался изменить зашифрованный текст, как LalolDublin предложил
Traceback (most recent call last):
File "C:\Users\David\Downloads\caeser (2).py", line 32, in <module>
myPlain = decrypt(myCipher ,alphabet, key)
File "C:\Users\David\Downloads\caeser (2).py", line 21, in decrypt
plaintext = plaintext + alphabet[idx]
UnboundLocalError: local variable 'plaintext' referenced before assignment
смотрите ближе к тому, как и где вы возвращаете свой зашифрованный текст, и ответ будет очевидным. – LaloInDublin
Хорошо, я пытаюсь понять, что вы подразумеваете под этим. Я смотрю на это, но это не так очевидно для меня. Мое единственное предположение заключалось в том, что вы хотите изменить mycipher для расшифровки (шифрования), но я попробовал это, и это тоже не была принятая функция. – David
Я дам ему попробовать. Я не знаю, что такое python, но я направлял вам имена переменных, проверяю ответ Im posting, и если он работает, пожалуйста, примите его. – LaloInDublin