我似乎無法得到這個程序我應該爲一個項目,以輸出正確的輸出做,即使我試圖得到它的工作多次。該項目是:Python的凱撒密碼的項目,不正確的輸出
您的程序需要解碼一個名爲「encrypted.txt」的加密文本文件。編寫它的人使用「key.txt」中指定的密碼。此密鑰文件將類似於以下內容:
A B B C C D D E E F F G G H H I I J J K K L L M M N N O O P P Q Q R R S S T T U U V V W W X X Y Y Z Z A
左列代表明文字母,右列表示對應的密文。 你的程序應該使用「key.txt」解碼「encrypted.txt」文件,並寫入了明文「decrypted.txt」。 你的程序應該處理加密的大寫和小寫字母,而不需要兩個密鑰文件(或複製密鑰)。您可能擁有全部大寫的解密文本。 您應該能夠處理加密文本中不在密鑰文件中的字符。在這種情況下,只需要解密重複該字符。這將允許您在加密文本中有空格,並在解密時保留空格。 雖然你可能編寫一個程序來創建密鑰文件 - 不要在提交中包含它。您可以手動創建加密和密鑰文本文件。使用Python Shell中的「新文件」選項(不要忘記保存爲txt)或編輯器(如記事本)。不要用字。
這裏是我的代碼:
keyFile = open("key.txt", "r")
keylist1= []
keylist2 = []
for line in keyFile:
keylist1.append(line.split()[0])
keylist2.append(line.split()[1])
keyFile.close()
encryptedfile = open("encrypted.txt", "r")
lines = encryptedfile.readlines()
currentline = ""
decrypt = ""
for line in lines:
currentline = line
letter = list(currentline)
for i in range(len(letter)):
currentletter = letter[i]
if not letter[i].isalpha():
decrypt += letter[i]
else:
for o in range(len(keylist1)):
if currentletter == keylist1[o]:
decrypt += keylist2[o]
print(decrypt)
我得到的唯一的輸出是:
,?
這是不正確。
您的密鑰文件只包含大寫字母,但'encrypted.txt'包含小寫,而你不轉換的情況下。 – Barmar
這是正確的,在說明:**,你的程序應該處理在加密的大寫和小寫字母,而無需兩個關鍵文件(或複製鍵)** – Barmar
不是搜索列表,使用字典。 – Barmar