def encode(t,c):
    tt,nbr_lettres='',0   
    for lettre in t :
        if lettre in ['é','è','ê','ë','È','É','Ê','Ë']:lettre='E'
        if lettre in ['à','À']:lettre='A'
        if lettre in ['ç']:lettre='C'
        lettre=lettre.upper()
        if 64<ord(lettre)<91:  #pour encoder les majuscules (les lettres)
            tt+=chr((ord(lettre)-65-c)%26+65)
            nbr_lettres+=1
        if 47<ord(lettre)<58:  #pour encoder les chiffres
            tt+=chr((ord(lettre)-48-c)%10+48)
            nbr_lettres+=1
        if nbr_lettres%5==0 : tt+=" "
    return tt
"""
texte='abcdefghijklmnopqrstuvwxyz0123456789'
clef=4
print('alphabet clair >> CODE ({}):'.format(clef))
print(encode(texte,0))
print(encode(texte,clef))
print(encode("Bonjour César, ça va bien?",0))
print(encode("Bonjour César, ça va bien?",clef))
"""
def analyse(t):
    alpha,beta={},[]
    for lettre in t :
        if 64<ord(lettre)<91:# pour enregistrer seulement les lettres
            if lettre in alpha:
                alpha[lettre]+=1
            else : alpha[lettre]=1
    print('alpha',alpha)
    val=[]                   # constitution de la liste des effectifs
    for c in alpha: 
        if alpha[c] not in val : val.append(alpha[c])
    val.sort(reverse=True)
    for n in val:
        for c in alpha:
            if alpha[c]==n:
                beta.append(c)
    print('beta',beta)
    return beta

texte='XQEBX MUEMZ FQDUQ EXQEB XGEOA GDFQE EAZFX QEYQU XXQGD QE'
Ordre=analyse(texte)
for i in range(3):
    print('clé={}'.format(((ord(Ordre[i])-ord('E'))%26)),encode(texte,((ord(Ordre[i])-ord('E'))%26)))


