frequencias = { 'A': 14.63, 'B': 1.04, 'C': 3.88, 'D': 4.99, 'E': 12.57, 'F': 1.02, 'G': 1.30, 'H': 1.28, 'I': 6.18, 'J': 0.40, 'K': 0.02, 'L': 2.78, 'M': 4.74, 'N': 5.05, 'O': 10.73, 'P': 2.52, 'Q': 1.20, 'R': 6.53, 'S': 7.81, 'T': 4.34, 'U': 4.63, 'V': 1.67, 'W': 0.01, 'X': 0.21, 'Y': 0.01, 'Z': 0.47 } def afreq(string): # determinar a frequencia de cada caractere na string # comparar com a frequencia de cada caractere na lingua portuguesa # calcular a diferenca entre as frequencias str_freq = {} for c in string: if not c.isalnum(): continue if c in str_freq: str_freq[c] += 1 else: str_freq[c] = 1 for c in str_freq: if not c.isalnum(): continue str_freq[c] /= len(string) freq_sorted = dict(sorted(str_freq.items(), key=lambda item: item[1])) possiveis_chaves = [] for c in frequencias: for k in freq_sorted: if abs(frequencias[c] - freq_sorted[k]) < 0.5: possiveis_chaves.append(ord(k) - ord(c)) return possiveis_chaves