# Frequency Finder# frequency taken from http://en.wikipedia.org/wiki/Letter_frequencyenglishLetterFreq = {'E': 12.70, 'T': 9.06, 'A': 8.17, 'O': 7.51, 'I': 6.97,'N': 6.75, 'S': 6.33, 'H': 6.09, 'R': 5.99, 'D': 4.25,'L': 4.03, 'C': 2.78, 'U': 2.76, 'M': 2.41, 'W': 2.36,'F': 2.23, 'G': 2.02, 'Y': 1.97, 'P': 1.93, 'B': 1.29,'V': 0.98, 'K': 0.77, 'J': 0.15, 'X': 0.15, 'Q': 0.10,'Z': 0.07}ETAOIN = 'ETAOINSHRDLCUMWFGYPBVKJXQZ'LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'def getLetterCount(message):letterCount = {'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 message.upper():if letter in LETTERS:letterCount[letter] += 1return letterCountdef getItemAtIndexZero(x):return x[0]def getFrequencyOrder(message):letterToFreq = getLetterCount(message)freqToLetter = {}for letter in LETTERS:if letterToFreq[letter] not in freqToLetter:freqToLetter[letterToFreq[letter]] = [letter]else:freqToLetter[letterToFreq[letter]].append(letter)for freq in freqToLetter:freqToLetter[freq].sort(key = ETAOIN.find, reverse = True)freqToLetter[freq] = ''.join(freqToLetter[freq])freqPairs = list(freqToLetter.items())freqPairs.sort(key = getItemAtIndexZero, reverse = True)freqOrder = []for freqPair in freqPairs:freqOrder.append(freqPair[1])return ''.join(freqOrder)def englishFreqMatchScore(message):'''>>> englishFreqMatchScore('Hello World')1'''freqOrder = getFrequencyOrder(message)matchScore = 0for commonLetter in ETAOIN[:6]:if commonLetter in freqOrder[:6]:matchScore += 1for uncommonLetter in ETAOIN[-6:]:if uncommonLetter in freqOrder[-6:]:matchScore += 1return matchScoreif __name__ == '__main__':import doctestdoctest.testmod()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。