Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Fréquence d'apparition d'une lettre dans un texte

Difficulté : Facile
Programme officiel

Le but de cette page est de créer un programme qui donne la fréquence de chaque lettre dans un texte. Une des applications est le décryptage de codages 'simples' comme celui de César par exemple. En effet, en français, le E apparait beaucoup plus souvent que les autres lettres donc si dans notre message codé par une méthode de César, c'est le W qui apparait le plus, on peut raisonnablement penser que le E est codé en W. Une analyse plus fine des fréquences permet de décoder d'autres lettres que le E.

Nombre d'occurrences d'une lettre dans un texte

Compléter la fonction compter(lettre,texte) suivante pour qu'elle donne le nombre de fois où la lettre se trouve dans le texte.

Remarque : Pour ne pas avoir à se soucier des majuscules ou minuscules, on a utilisé la fonction lower() pour mettre toutes les lettres du texte en minucules. De plus, dans les textes que nous allons considérer, il n'y aura aucun accent.

Nombre d'occurrences d'une lettre dans un texte
def compter(lettre,texte):
compteur = 0
for L in texte.lower() :
if ... :
compteur = ...
return ...
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Liste des fréquences d'apparitions

Créer un fonction frequences(texte) qui prend en entrée un texte et renvoie la liste des fréquences de chaque lettre dans l'ordre alphabétique. Le texte ne contiendra aucun accent.

Exemple : frequences('abcb') va renvoyer [0.25, 0.5, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

Bien sûr, on pourra copier-coller la fonction précédente pour l'utiliser.

Liste des fréquences d'apparitions
# Copier coller la fonction compter ci dessous
def frequences(texte) :
# Ecrire votre fonction ci dessous
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Visualisation

Copier-coller vos fonctions précédentes pour voir apparaitre le diagramme en bâtons des frequences d'apparition des lettres.

On remarquera de quelle façon on a mis les lettres en abscisses : On a donné comme X les nombres de 0 à 25 puis on a remplacé les étiquettes par les lettres en modifiant le paramètre tick_label.

Diagramme des fréquences d'apparitions
import matplotlib.pyplot as plt
# Vous pouvez modifier le texte si besoin.
texte = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit. Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna. Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus. Curabitur eu amet."""
# Copier coller vos fonction précédentes ci dessous
lettres = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
X = list(range(26))
Y = frequences(texte)
plt.bar(X,Y,tick_label=lettres)
plt.show()
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Prolongement possible :

Déterminer les fréquences d'apparitions des chiffres dans un nombre (Par exemple les premières millions de décimales de π ou de e). Pour cela, il faudra tout d'abord faire des recherches sur des façons efficaces de calculer ces nombres puis sur comment travailler avec un grand nombre de décimales en python. Rien de bien difficile.

Open Source Your Knowledge: become a Contributor and help others learn. Create New Content