我想创建一个凯撒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