我想創建一個凱撒Cypher函數,當給定一個輸入文件的程序(通過命令行)分析文件找出每個字母(大寫和小寫)有多少是當下。從那裏我可以找出解密文件的密鑰。Python凱撒Cypher分析輸入文件
我遇到的問題是拉最常見的字母,然後我可以將其轉換成密鑰。
我下面的代碼遠沒有完成。我一直在試圖找到一種方式來拉動最常見的信件。從那裏我相信使用已經使用的代碼的變體,我將能夠轉換和使用一個數字作爲一個關鍵。我真的只需要一個關於如何獲得初始角色的指針。
此代碼是不是已經被用於分析該文件,並存儲在詞典的結果的完整的程序,只有代碼:
elif fileOption == "2":
def decryptChars(aString):
"Function to count characters in the input file"
charCount = {}
for char in aString:
if char in charCount.isalpha():
if char in charCount:
charCount[char] = charCount[char] + 1
else:
charCount[char] = 1
return charCount
try:
inputFile = open(sys.argv[1], "r")
except:
sys.exit("The file {} could not be opened...".format(sys.argv[1]))
totalChars = inputFile.read().replace(" ", "")
charCount = decryptChars(totalChars)
print(sorted(charCount.items()))
當我傳遞一個文件以字符串「而不是要求所有需要的功能被內置到語言的核心」我得到的結果是:
[('R', 1), ('a', 6), ('b', 2), ('c', 2), ('d', 2), ('e', 9), ('f', 1), ('g', 3), ('h', 4), ('i', 7), ('l', 5), ('n', 6), ('o', 4), ('q', 1), ('r', 5), ('s', 2), ('t', 9), ('u', 4), ('y', 1)]
(我不知道最好的試片,因爲它會返回2 9 ...)。
任何建議將非常有幫助。
讓我明白這一點。考慮到你在問題結尾顯示的元組列表,這是一個字母頻率對列表,你想選擇最頻繁的字母? – user3030010
結果似乎很好,除了它認爲'R'和'r'爲2個不同的字符。這是唯一的問題嗎? – lucasnadalutti
@ user3030010正確。我需要確定最頻繁的字母,然後將其用作關鍵字。我無法找到一種方法來自動獲取最frequesnt鍵。 – Romark14