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 :

Aide pour un exercice Python3.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut Aide pour un exercice Python3.
    Bonjour à tous et merci d'avance à ceux qui prendront le temps de m'aider.

    J'apprends le langage python depuis peu et je suis bloqué sur un exercice qui ne doit pas être très compliqué, voici l'intitulé de l'exercice:

    Définissez une fonction compteMots(ph) qui renvoie le nombre de mots contenus
    dans la phrase ph. On considère comme mots les ensembles de caractères inclus entre
    des espaces.


    Comme c'est un exercice pour débuter il faut que j'utilise une boucle while mais je n'arrive pas à comprendre comment gérer les espaces en effet je n'arrive qu'à compter le nombre de caractères mais pour gérer l'espace je ne sais pas ou le mettre voici mon début de solution ( ne rigolez pas..):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def compteMots(ph):
       i,mots = 0,0
       while i < len(ph):
          mots = mots + 1
          i = i + 1
       return mots
     
    print(compteMots("Aidez moi lol"))
    Voila merci beaucoup.

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> def compteMots(ph):
    ...     return len(ph.split())
    ... 
    >>> print(compteMots("Aidez moi lol"))
    3
    >>> def compteMots(ph):
    ...     print(ph.split()) # Pour comprendre
    ... 
    >>> compteMots("Aidez moi lol")
    ['Aidez', 'moi', 'lol']
    Sauf si le while est obligatoire (ce qui est regrettable).

    @+

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Bonjour,

    Sauf si le while est obligatoire (ce qui est regrettable).

    @+
    Salut, Dans les tutos et cours pour débutant (voir Swinnen) on demande toujours de réaliser au moyen d'une fonction de dix lignes ce qui peut se résoudre en une instruction.

    Une piste pour Asimoov:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    txt = "un deux trois"
    while txt == "un deux trois":
        count = len(txt.split(" "))
        txt = "eureka"
    print count
    Normalement on distribue ceci sous licence WTPFL-2

    p.s. j'espère que rien de tout ceci n'a changé dans Python3 ...


    edit: En fait si, print demande des parenthèses, Asimoov, tu corriges hein.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut
    Merci à tous les deux pour votre aide ainsi que pour la rapidité et la qualité de vos réponses

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    L'approche, c'est que le bouquin de Swinnen ne se contente pas d'enseigner Python mais aussi la programmation. Il s'agit ici de réaliser un programme avec les constructions du langage qui ont été vues jusque là, sans dépendre de la richesse des structures de données et des librairies de Python. Il s'agit d'écrire un algorithme et de l'implémenter, pas de trouver dans la librairie Python la fonction qui fait ce qui est demandé.

    Une suggestion pour Asimoov: reste sur ton schéma initial. Tu peux compter les transitions entre espaces et mots. Cela peut se faire avec une variable booléenne qui indique si tu es dans un mot ou pas. Le compteur est incrémenté lorsque cette variable passe de False à True. Cette variable est initialisée à False afin que le premier mot soit compté même s'il n'est pas précédé d'espaces.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def compteMots(ph):
       dans_mot = False
       i,mots = 0,0
       while i < len(ph):
          ...
          i = i + 1
       return mots

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    J'avais bien compris dividee. Je voulais juste dire qu'une réponse 'qui marche pour l'exemple donné' (comprendre mon exemple bidon) est vite comprise pour acquise.
    J'ai sans doute un rejet de l'utilisation à l'outrance du while dans les tutos (entre autre).

    @Asimoov : J'allais me reprendre avec un code plus 'proche de ce qui est demander' mais la réponse de dividee est juste, reste sur cette voie.

    Bon code

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    ? On parle bien de fonction non ?

    Citation Envoyé par Asimoov Voir le message
    Définissez une fonction compteMots(ph) qui renvoie le nombre de mots contenus
    dans la phrase ph. On considère comme mots les ensembles de caractères inclus entre
    des espaces.
    Soit ce qui donne pour un débutant un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def compteMots(ph):
        index = 1 # Pas d"espace avant le premier mots.
        isexit = False # Pour le while.
        while not isexit: # Donc 'si isexit n'est pas True > on continue.
            for car in ph: # Lecture caractere par caractere.
                if car == ' ': # Si c'est un espace
                    index += 1 # Rajoute 1 a index. Pour rappel index commance a 1 car pas d'espace avant
            isexit = True # Sortie du for car in ph. Sauf si le dernier caractere n'est pas un espace c'est bon
        return index # Retourne l'index (faux donc si le dernier caractere est un espace).
    print(compteMots("Aidez moi lol Aidez moi lol "))
    (A noter : dix lignes. Je rigole)
    Je ne comprend pas cette approche.

    @+

    Edit : A comprendre pour Asimoov que dans un cas d'un print(compteMots("Aidez moi lol Aidez moi lol")) la personne juge cela comme bon.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Besoin d'aide pour un exercice
    Par bebetoalvaro dans le forum Pascal
    Réponses: 9
    Dernier message: 05/02/2007, 01h59
  2. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23
  3. Aide pour un exercice
    Par nelob dans le forum Assembleur
    Réponses: 5
    Dernier message: 02/03/2006, 23h46
  4. Demande d'aide pour un exercice
    Par IDE dans le forum C
    Réponses: 3
    Dernier message: 29/10/2005, 15h09

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