Question chaine de caractere python
Résolu
enam07
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Svp j'arrive pas a ecrire une fonction qui renvoie une liste avec le nombre de chaque lettre apparaissant dans le mot saisie par exemple :aaaabbbb ça donne [4,4,0,0...]
A voir également:
- Question chaine de caractere python
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Citizen code python avis - Accueil - Outils
3 réponses
def liste_lettres(mot):
alphabet=["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"]
i=0
l=[]
n=0
z=0
while i < 26 :
if alphabet[i] in mot :
n=n+1
l.insert(i,n)
else :
l.insert(i,0)
i=i+1
return l
alphabet=["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"]
i=0
l=[]
n=0
z=0
while i < 26 :
if alphabet[i] in mot :
n=n+1
l.insert(i,n)
else :
l.insert(i,0)
i=i+1
return l
Bonjour,
Si on regarde le problème, je vois déjà la difficulté de créer 26 éléments représentant chacun le nombre d'occurrence de chaque lettre de l'alphabet. Pour cela, on fera
Ensuite l'autre difficulté est d'ajouter 1 à chaque occurrence trouvée à condition que nos lettres soient des caractères compris entre 'a' et 'z'.
On pourrait utiliser la fonction ord, qui permettra de connaître son code ascii. Ainsi, avoir l'index de la liste memory, se trouvera en faisant une simple soustraction d'entiers.
Ce qui veut dire qu'on ajoute la valeur 1 à l'ancienne valeur se trouvant à l'index 2 de la liste memory.
Pour faire la détection des caractères compris entre 'a' et 'z', c'est algorithme assez simple je trouve.
Le code python final est aussi simple
Il est possible d'utiliser un module spécifique pour faire cela
Bonne continuation...
Si on regarde le problème, je vois déjà la difficulté de créer 26 éléments représentant chacun le nombre d'occurrence de chaque lettre de l'alphabet. Pour cela, on fera
memory = [0 for i in range(26)]
Ensuite l'autre difficulté est d'ajouter 1 à chaque occurrence trouvée à condition que nos lettres soient des caractères compris entre 'a' et 'z'.
On pourrait utiliser la fonction ord, qui permettra de connaître son code ascii. Ainsi, avoir l'index de la liste memory, se trouvera en faisant une simple soustraction d'entiers.
>>> ord('a') 97 >>> ord('z') 122 >>> ord('c') - ord('a') 2
Ce qui veut dire qu'on ajoute la valeur 1 à l'ancienne valeur se trouvant à l'index 2 de la liste memory.
Pour faire la détection des caractères compris entre 'a' et 'z', c'est algorithme assez simple je trouve.
Si la lettre a une valeur comprise entre 97 et 122 Faire index = ord(lettre) - 97 ajouter 1 à l'index de memory
Le code python final est aussi simple
def counter(mystr): memory = [0 for i in range(26)] for c in mystr: ascii = ord(c) if ascii in range(97, 123): index = ascii - 97 memory[index] += 1 return memory s = 'aaaabbbb' print(counter(s)) # [4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Il est possible d'utiliser un module spécifique pour faire cela
from collections import Counter s = 'aaaabbbb' occurrences = Counter(s) print(occurrences)
Bonne continuation...