我正在嘗試使用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