Rechercher : dans
Par :

[Python]Compter occurence d'un caractère

Dernière réponse le 10 jui 2004 à 21:08:26 kilian, le 10 jui 2004 à 01:09:20 
 Signaler ce message aux modérateurs

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.....

Meilleures réponses pour « [Python]Compter occurence d'un caractère » dans :
Compter les mots dans un document (OpenOffice.org ou Word) VoirIl est parfois utile de pouvoir compter le nombre de mots ou de caractères dans un document. Les deux principales suites bureautiques permettent de le faire très simplement : Avec Word Avec OpenOffice.org Avec Word Ouvrez votre document...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...

1

kilian, le 10 jui 2004 à 20:03:50

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

Répondre à kilian

2

sebsauvage, le 10 jui 2004 à 20:08:17
  • +1

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.

Répondre à sebsauvage

3

sebsauvage, le 10 jui 2004 à 20:10:48
  • +1

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"


Répondre à sebsauvage

4

kilian, le 10 jui 2004 à 20:18:34

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 :-)

Répondre à kilian

5

kilian, le 10 jui 2004 à 20:19:44

Et je ne connaissais pas non plus count() tient :-)

Décidément ya beaucoup de choses qui m'attendent.... :-)

Répondre à kilian

6

 sebsauvage, le 10 jui 2004 à 21:08:26

:-)

Répondre à sebsauvage