我正在尝试使用python来帮助我破解Vigenère密码。我对编程相当陌生,但我设法制作了一种分析单字母频率的算法。这是我到目前为止:使用python进行频率分析
Ciphertext = str(input("What is the cipher text?"))
Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def LetterFrequency():
LetterFrequency = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0, 'F': 0, 'G': 0, 'H': 0, 'I': 0, 'J': 0, 'K': 0, 'L': 0, 'M': 0, 'N': 0, 'O': 0, 'P': 0, 'Q': 0, 'R': 0, 'S': 0, 'T': 0, 'U': 0, 'V': 0, 'W': 0, 'X': 0, 'Y': 0, 'Z': 0}
for letter in Ciphertext.upper():
if letter in Letters:
LetterFrequency[letter]+=1
return LetterFrequency
print (LetterFrequency())
但是有没有办法让我从最频繁的信件开始降序打印答案?无论我做什么,答案都会以随机顺序显示。
也没有人知道如何提取特定的字母形成一个大块的文本进行频率分析?因此,举例来说,如果我想把每一个第三个字母从文本“THISISARATHERBORINGEXAMPLE”一起来分析,我需要得到:
T H I
S I S
A R A
T H E
R B O
R I N
G E X
A M P
L E
通常我会用手在记事本或者Excel中这需要做到这一点年龄。有没有办法在python中解决这个问题?
由于提前,
托尼
谢谢!这似乎工作,但我可以不包括在柜台的空间? –
尝试'计数器(字母在x中的字母!='') – blacksite
@TonyZhang,更新了答案! – coder