IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Compter le nombre de 'e' dans une chaine de caractère.


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Compter le nombre de 'e' dans une chaine de caractère.
    Bonjour,

    Voila, j'ai écrit un petit script python permettant de d'afficher le nombre de 'e'
    contenus dans 'le monde'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ch='le monde'
    a=0
    b=len(ch)            #Nombre de caractère (octets) contenus dans 'ch' 
    d=0
    c=ch[d]              #Permet de selectionner le caractère numéro 0, donc l
    e=0                  #nombre de 'e' contenus dans 'le monde'
    while a<b:           #la boucle s'arrête une fois tout les caractères comparés a 'e'
        if c=='e':  
            e=e+1
        d=d+1
        a=a+1
     
     
    if e>=1:
        print 'ch contient', e, 'e'
     
    if e==0:
        print 'ch ne contient pas de "e"'
    Le problème viens du fait qu'il ne fonctionne pas !

    La variable c ne change pas. elle est sur le premier caractère : 'l' de 'le monde'
    alors qu'il y a bien une incrémentation de d=d+1.

    De plus une fois le script executé, lorsque je tape 'd' dans la console,
    celle ci me renvoie 8. Ce qui certifie que tout les caractères ont étés comparés a 'e',
    alors que ce n'est pas le cas.

    Car si cela l'était 'c' devrait être égale a 'e'.


    Merci d'avance.

    PS:je sais que d'autres expressions permettent d'obtenir ce résultat, mais cela me trouble....

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 893
    Points : 7 249
    Points
    7 249
    Par défaut
    python est fait pour se simplifier la vie.

    Je me permets de te donner une autre solution, étant faignant de nature.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a='le monde'
    print a.count('e')
    Maintenant si tu veux un compteur de 'e'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a='le monde'
    compteur=0
    for i in a:
        if i=='e':
            compteur+=1
        else :
            pass
    print compteur

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Points : 184
    Points
    184
    Par défaut
    Pour t'indiquer ton problème, tu assignes à c la valeur de ch(d) quand d vaut 0.
    Si après tu changes d, la valeur de c ne changera pas, sauf si tu réassignes la valeur de ch(d) à c après avoir incrémenté d (ce qui manque dans ton bloc while).

    Mais la meilleure solution pour ce problème reste la première proposition de fred1599.
    La deuxième est + générique, elle sera adaptable pour d'autres problèmes (perso, j'aurais pas écrit else: pass, mais c'est une question de goût ).

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 893
    Points : 7 249
    Points
    7 249
    Par défaut
    La deuxième est + générique, elle sera adaptable pour d'autres problèmes (perso, j'aurais pas écrit else: pass, mais c'est une question de goût ).
    Non tu as raison, ce n'est pas une question de goût, mais plutot la faignantise de mettre else : compteur+=0 et qui me semble plus logique dans le contexte.


  5. #5
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    D'un autre coté, dans le contexte, pourquoi mettre un else ? !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # usr/bin/env python
    # -*- coding: utf-8 -*-
     
    a='le monde'
    compteur=0
    for i in a:
        if i=='e':
            compteur+=1
    print compteur
    C'est un coup si la personne débute en python, à ce qu'elle mette des else: pass, après chaque if ^^

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 893
    Points : 7 249
    Points
    7 249
    Par défaut
    C'est un coup si la personne débute en python, à ce qu'elle mette des else: pass, après chaque if
    Étant autodidacte, j'ai beaucoup lu de bouquin, et dans les bouquins justement il leur semblait logique de mettre un else après un if ou des elif.

    Maintenant certains ouvrages donnent de mauvaises habitudes je le conçois.

    J'ai toujours appris comme cela, et le code que tu donnes me donne l'impression d'avoir oublié quelquechose

    Bonne journée

  7. #7
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je suis autodidacte aussi, rassures toi c'est pas une tare. C'est comme faire des erreurs, c'est normal aussi

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Étant autodidacte, j'ai beaucoup lu de bouquin, et dans les bouquins justement il leur semblait logique de mettre un else après un if ou des elif.

    Maintenant certains ouvrages donnent de mauvaises habitudes je le conçois.

    J'ai toujours appris comme cela, et le code que tu donnes me donne l'impression d'avoir oublié quelquechose

    Bonne journée
    J'ai également lu beaucoup de bouquins sur Python, mais je n'y ai jamais de clause else utilisée inutilement.

    Thierry

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/05/2009, 13h49
  2. compter le nombre de mots dans une chaine en php
    Par hadjiphp dans le forum Langage
    Réponses: 6
    Dernier message: 22/04/2009, 21h20
  3. Réponses: 4
    Dernier message: 04/03/2009, 10h18
  4. Compter le nombre d'occurence dans une chaine
    Par shirya dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2007, 20h39
  5. Compter le nombre de caractere dans une chaine
    Par jmjmjm dans le forum C++
    Réponses: 13
    Dernier message: 19/11/2006, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo