Question sur mon programme python

Résolu/Fermé
Viktaure - Modifié le 20 oct. 2023 à 17:37
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 20 oct. 2023 à 17:42

Bonjour,

Je ne comprends mon erreur sur le programme, pouvez-vous m'aider ?

On suppose déjà définie une variable msg contenant une chaîne de caractères. Écrire un programme qui stocke dans une variable n le nombre d’occurrences de la séquence « le » au sein de la chaîne msg.

La casse, les espaces et accents sont pris en compte, c'est-à-dire qu'on ne comptera pas les apparitions de « Le », « l e », « lé », ...

Mon programme :

n = 0
for c in msg:
    if c == "le":
        n +=1
print(n)

Cependant, le programme renvoie toujours la valeur 0 peu importe la phrase.


Windows / Chrome 117.0.0.0

3 réponses

jee pee Messages postés 40456 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 novembre 2024 9 420
19 oct. 2023 à 20:06

Bonjour,

Tu devrais afficher c dans la boucle tu comprendras pourquoi cette variable ne peut jamais être égale à "le".


0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
20 oct. 2023 à 13:34

Bonjour,

En faisant 

for c in msg:

tu parcours msg caractère par caractère

donc un seul caractère ne peut contenir 2 caractères : "le"...

0
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
Modifié le 20 oct. 2023 à 17:42

Bonjour,

Pour compléter les réponses précédente, il faudrait itérer sur ta chaîne mot par mot, par exemple à l'aide de la méthode str.split, qui convertit la chaîne à laquelle elle s'applique en une liste de chaînes. Chacune de ses chaînes s'obtient en se décomposant la chaîne de départ à l'aide d'un séparateur (par défaut " ").

msg = "aaa bbb ccc ddd"
print(msg.split())
# Affiche ['aaa', 'bbb', 'ccc', 'ddd']

Donc dans ton cas :

for mot in msg.split():
    print(mot)

Bonne chance

0