Aller au contenu

Exercices sur les dictionnaires⚓︎

Exercice 1

On considère la liste suivante : lst = ['5717', '1133', '5545', '4031', '6398', '2734', '3070', '1346', '7849', '7288', '7587', '6217', '8240', '5733', '6466', '7972', '7341', '6616', '5061', '2441', '2571', '4496', '4831', '5395', '8584', '3033', '6266', '2452', '6909', '3021', '5404', '3799', '5053', '8096', '2488', '8519', '6896', '7300', '5914', '7464', '5068', '1386', '9898', '8313', '1072', '1441', '7333', '5691', '6987', '5255']

Quel est le chiffre qui revient le plus fréquemment dans cette liste ?

Correction
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
lst = ['5717', '1133', '5545', '4031', '6398', '2734', '3070', '1346', '7849', '7288', '7587', '6217', '8240', '5733', '6466', '7972', '7341', '6616', '5061', '2441', '2571', '4496', '4831', '5395', '8584', '3033', '6266', '2452', '6909', '3021', '5404', '3799', '5053', '8096', '2488', '8519', '6896', '7300', '5914', '7464', '5068', '1386', '9898', '8313', '1072', '1441', '7333', '5691', '6987', '5255']

occ = {}
maxi = 0
for nombre in lst:
    for chiffre in nombre:
        if chiffre in occ:
            occ[chiffre] += 1
        else:
            occ[chiffre] = 1
        if occ[chiffre] > maxi:
            maxi = occ[chiffre]
            chiffre_max = chiffre

print(chiffre_max, 'est le chiffre le plus fréquent')
print('il apparait', maxi, 'fois')

Exercice 2

Exercice 2 du sujet Centres Etrangers J1 2021

Exercice 3 : création d'une rainbow table 🌈

Créer une fonction inverse_md5 qui va chercher dans un dictionnaire (construit préalablement) le mot correspondant au hash donné en paramètre.

À quel mot de passe correspond le hash 33da7a40473c1637f1a2e142f4925194 ?

Exemple :

>>> inverse_md5('0571749e2ac330a7455809c6b0e7af90')
>>> 'sunshine'

Aide :

  • liste de 1000 mots de passe fréquents : ici
  • comment lire / convertir le contenu d'un fichier dans une liste de string :
    lst = open("monfichier.txt").read().splitlines()
    
  • comment calculer du MD5 en Python :
    import hashlib
    result = hashlib.md5('azerty'.encode())
    print(result.hexdigest())