On souhaite écrire un algorithme qui, pour un texte donné, donne la fréquence d'apparition de chaque lettre.
On considère le texte suivant : « Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire. »
Quelle est la fréquence f d'apparition de la lettre « a » ?
On compte les espaces comme des caractères.
La fréquence d'apparition de la lettre « a » dans le texte est égale au rapport entre le nombre d'apparitions de la lettre « a » sur le nombre de caractères que contient le texte :
f = \dfrac{\text{Nombre de « a »}}{\text{Nombre de caractères}}
Dans le texte, il y a 9 « a » et 104 caractères.
Ainsi :
f = \dfrac{9}{104}
La fréquence d'apparition de la lettre « a » dans le texte est donc :
f \approx 0{,}09
Quelle fonction écrite en Python permet, pour une lettre et un texte donnés, de renvoyer la fréquence d'apparition de la lettre dans le texte ?
Comme on l'a vu dans la question précédente, la fréquence d'apparition d'une lettre dans un texte est égale au rapport entre le nombre d'apparitions de la lettre sur le nombre de caractères que contient le texte.
Afin de compter le nombre de caractères d'un texte, on peut utiliser la fonction len qui mesure la longueur d'un élément.
Pour compter le nombre d'apparitions d'une lettre dans un texte, on peut utiliser l'attribut .count().
On utilise la fonction float afin de s'assurer que la longueur du texte est donnée sous forme d'un float pour s'assurer que la division se fasse correctement.
La fonction écrite en Python qui permet, pour une lettre et un texte donnés, de renvoyer la fréquence d'apparition de la lettre dans le texte est donc :
def freq_lettre(texte,lettre):
longueur_texte=float(len(texte))
nombre_lettre=texte.count(lettre)
return(nombre_lettre/longueur_texte)
Quelle fonction écrite en Python permet de donner la fréquence de chaque lettre dans un texte ?
Pour donner la fréquence d'apparition de chaque lettre dans un texte, on peut utiliser la fonction freq_lettre de la question précédente.
Pour cela, il faut créer un alphabet. Cela permet d'utiliser une boucle qui passe sur toutes les lettres de l'alphabet et appelle la fonction freq_lettre pour chaque lettre.
On peut ensuite utiliser print pour afficher la lettre et sa fréquence d'apparition dans le texte.
Il ne faut pas utiliser return, sinon on arrête la fonction.
La fonction écrite en Python qui permet de donner la fréquence de chaque lettre dans un texte est donc :
def frequence(texte):
alphabet="abcdefghijklmnopqrstuvwxyz"
for lettre in alphabet:
print(lettre,freq_lettre(texte,lettre))