[Python]Compter occurence d'un caractère

Bonjour, j'ai un problème avec un exercice de python. Je dois compter lle nombre de lettres "e" dans une phrase donnée par l'utilisateur.
Voilà le script:

e=0
i=0
phrase=raw_input()
lettre="e"

while (i <= len(phrase)):
    if phrase[i]==lettre:
        e=e+1
    i=i+1

print "Il ya", e, '\"e\"',"dans votre phrase"


Et le debogeur me situe l'erreur dans la condition
if phrase[i]==let
mais alors là je vois pas du tout.....

5 réponses

  1. Modérateur
    Note que:
    Une chaîne de caractères est aussi un objet sur lequel on peut faire une itération.
    Tu pourrais donc faire:

    e=0
    phrase=raw_input()
    malettre="e"
    
    for lettre in phrase:
        if lettre==malettre:
            e=e+1
    
    print "Il ya", e, '\"e\"',"dans votre phrase"


    Ou encore plus court:
    phrase=raw_input()
    malettre="e"
    
    print "Il ya", phrase.count(malettre), '\"e\"',"dans votre phrase"


    5
    1. Modérateur
      C'est normal.

      Il faut que tu mette < et non pas <=

      En effet quand tu fais phrase[i], l'index commence à zéro.

      a='ABC'
      a[0] vaut 'A'
      a[1] vaut 'B'
      a[2] vaut 'C'
      len(a) vaut 3
      Donc faire a[3] fera un IndexError.
      2
      1. merci
        0
    2. Modérateur
      Aaah oky !! Merci pour la réponse, je me décourageais un peu.... :-)

      Etant débutant, je ne sais pas encore comment utiliser for, mais ça ne saurait tarder, merci encore :-)
      2
      1. Modérateur
        Et je ne connaissais pas non plus count() tient :-)

        Décidément ya beaucoup de choses qui m'attendent.... :-)
        0
    3. Modérateur
      Voici ce que me renvoie vraiment le shell en fait :
      File "test.py", line 7, in ?
          if phrase[i]==lettre:
      IndexError: string index out of range
      1