Un test aura d’ailleurs lieu mardi 9 février dans l’esprit de ces questions, déjà préparées en distanciel.
On revient sur les exercices proposés en « codage »
Problème de codage
Avec un dictionnaire d’interversion :
from random import shuffle def dico_aléatoire(): """ Renvoie un dictionnaire dont les clés sont les lettres de l'aplphabet dans l'ordre et les valeurs les lettres de l'alphabet mélangées """ # A -> 65 ... Z -> 90 clés = [chr(code_ascii) for code_ascii in range(65, 91)] #print(clés) # copie de la liste clés pour les valeurs valeurs = clés[:] #print(valeurs) # on mélange les valeurs shuffle(valeurs) #print(valeurs) # on construit et renvoie le dico return {clés[i] : valeurs[i] for i in range(26)} '''D = {} for i in range(26): D[clés[i]] = valeurs[i] return D''' def codage(chaine, D): """Code la chaine avec le dico D""" # une chaine vide à compléter nouvelle = "" # on parcourt la chaine for carac in chaine: # une majuscule ? if 'A' <= carac <= 'Z': # je concatène le caractère codé nouvelle += D[carac] elif 'a' <= carac <= 'z': # une minuscule ? je passe à la majuscule majuscule = chr(ord(carac) - 32) # je code nouvelle_majuscule = D[majuscule] # je rajoute la minuscule minuscule = chr(ord(nouvelle_majuscule) + 32) # je concatène la minuscule codée nouvelle += minuscule else: # je garde les autres caractères nouvelle += carac # je renvoie la chaîne codée return nouvelle def decodage(chaine, D): dico_inversé = {D[clé] : clé for clé in D} # ou D.keys() return codage(chaine, dico_inversé) D = dico_aléatoire() print(D) chaine = "Vive le bac en controle continu OU PAS !" chaine_codée = codage(chaine, D) print(chaine) print(chaine_codée) retour_a_la_chaine = decodage(chaine_codée, D) print(retour_a_la_chaine)
Qui donne :
{'A': 'N', 'B': 'X', 'C': 'H', 'D': 'K', 'E': 'Y', 'F': 'B', 'G': 'C', 'H': 'T', 'I': 'A', 'J': 'Z', 'K': 'R', 'L': 'E', 'M': 'U', 'N': 'W', 'O': 'D', 'P': 'M', 'Q': 'P', 'R': 'I', 'S': 'G', 'T': 'Q', 'U': 'L', 'V': 'J', 'W': 'F', 'X': 'O', 'Y': 'V', 'Z': 'S'} Vive le bac en controle continu OU PAS ! Jajy ey xnh yw hdwqidey hdwqawl DL MNG ! Vive le bac en controle continu OU PAS ! >>>