尝试通过统计解码的问题

Problems in trying to decode through statistics

我的目标是使用法语中字母出现的统计信息来解码消息。为此,我创建了第一个函数,该函数按文本中出现的降序创建字符串。然后,我匹配字符的索引,并将每个字符更改为对应于法语的字符。问题是文本在控制台中未更改。我是编程的初学者,感谢任何对我的错误或不准确之处的帮助。谢谢!!!

    import string

texte = f"""iwnspa rynjjdj arg sj hjuajhask awaigkhihaj ag sj ongyaonghihaj ps vvha rhaiwa, rdsqajg idjrhpaka
idooa wa xaka pa wn gyadkha pa w’hjbdkonghdj. hw arg ja wa 30 nqkhw 1916 n xagdrlaf, pnjr wa
ohiyhunj. rdj xaka arg sj csua, ag rn oaka arg wa xkdqhrask ps wfiaa pa unfwdkp, sja nsgka qhwwa
ps ohiyhunj. hw agspha n w’sjhqakrhga ps ohiyhunj ds hw rshg sj pdszwa iskrsr aj awaigkhihga
ag aj ongyaonghmsar. hw dzghajg sja whiajia pnjr iar pasv phrihxwhjar aj 1936, nqnjg pa xdskrshqka
rar agspar ns kaxsga ohg (onrrniysraggr hjrghgsga db gaiyjdwduf ). hw rdsghajg aj 1940 sja
gyara pa pdigdkng aj ongyaonghmsar (awwa xdkgnhg rsk par nxxwhinghdjr par ongyaonghmsar n
wn uajaghmsa) ag sj oaodhka pa onrgak aj awaigkhihga. rh wn xkaohaka bsg wnkuaoajg hujdkaa,
wn raidjpa,msh avxwhmsa idooajg sghwhrak war nwuazkar pa zddwa xdsk w’njnwfra par rhujnsv
awaigkhmsar, arg kargaa iawazka. aj 1941, hw arg aoznsiya pnjr war wnzdkngdhkar pa wn idoxnujha
pa gawaxydja ngg zaww. hooaphngaoajg, hw gknqnhwwa rsk par xkdcagr aj whnhrdj nqai war
rakqhiar raikagr, msh wsh bdjg jdgnooajg nzdkpak par msarghdjr pa ikfxgduknxyha. aj 1949, hw
ra onkha; xnk wn rshga, hw nskn gkdhr ajbnjgr. rynjjdj gknqnhwwa nsv wnzdkngdhkar pa zaww
csrms’aj 1971. xnknwwawaoajg n iawn, hw arg nsrrh xkdbarrask ns ohg pa 1958 n 1978. rynjjdj
idoxkajpmsa gdsga pdjjaa, oaoa wn qdhv ds par honuar, xasg ra gknjroaggka n w’nhpa p’sja rshga
pa 0 ag pa 1 (war zhgr), dsqknjg wn qdha nsv idoosjhinghdjr jsoakhmsar ag jdj xwsr njnwduhmsar.
hw odjgka nsrrh idooajg wa bnhg p’ncdsgak iakgnhjr zhgr n sj oarrnua xasg xakoaggka pa qakhbhak
msa war nsgkar djg aga idkkaigaoajg gknjrohr (dj xnkwa pa idpa idkkaigask p’akkaskr). hw n
kais pa jdozkasv ydjjaskr, pdjg wn oapnhwwa jnghdjnwa par rihajiar par onhjr ps xkarhpajg cdyjrdj
aj 1966, ag wa xkhv lfdgd aj 1985. n wn bhj pa rn qha, hw rdsbbka pa wn onwnpha p’nwtyahoak,
ia msh wa idjpshg pnjr sja onhrdj pa kaxdr ps onrrniysraggr. hw f paiapa wa 24 baqkhak 2001, n
w’nua pa 84 njr."""

def count(texte):
    ordre_txt = {}
    order = ""
    texte.lower()
    alfb = list(string.ascii_lowercase)
    for i in range(len(alfb)):
        ordre_txt[alfb[i]] = texte.count(alfb[i])
    ordre_txt = sorted(ordre_txt.items(), key = lambda x: x[1], reverse = True)
    for elt in ordre_txt:
        order += elt[0]
    return order


def trad2(texte):
    ordre_fr = 'esaitnruolhdcgmpvfqbjxzykw'
    ordre_txt = count(texte)

    for i in range(26):
        texte.replace(ordre_txt[i], ordre_fr[i])
        return texte

print(trad2(texte))
  1. str.lower() Return 字符串的副本,所有大小写字符都转换为小写。 因此在 [=] 的第 3 行使用 texte = texte.lower() 而不是 texte.lower() 14=].

  2. def trad2(texte): 中应用 str.translate(table) 例如如下:

def trad2(texte):
    ordre_fr = 'esaitnruolhdcgmpvfqbjxzykw'
    ordre_txt = count(texte)
    tr_table = str.maketrans(ordre_txt, ordre_fr)
    return texte.translate(tr_table)
  1. 注意str.maketrans()静态方法(returns翻译table可用于str.translate())…
    如果有两个参数,它们必须是等长的字符串,并且在生成的字典中,x中的每个字符都会映射到y中相同位置的字符。