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 :

Programmation Fonctionnelle et calcul du pluriel


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut Programmation Fonctionnelle et calcul du pluriel
    Bonjour à tous !
    Je fais appel à votre aide car je bloque sur un exercice qui concerne le calcul du pluriel :
    Mettons qu'on a une fonction comme pluriel() et qu'on a besoin de l'appliquer systématiquement à une liste de
    mots – c'est d'ailleurs le problème posé dans l'exercice ci-dessus ; supposons que ça m'arrangerait de
    récupérer une nouvelle liste avec les mêmes éléments, mais au pluriel. Bon, mettons que la liste de mots
    s'appelle justement mots ; il me suffit de coder :
    [pluriel(x) for x in mots]
    et la valeur résultante est une liste de même longueur, dont les éléments sont le résultat de l'application de
    la fonction pluriel() aux éléments de la liste originale.
    [EXERCICE] définir la liste mots, et lui appliquer votre fonction pluriel() comme dans l'exemple ci-dessus.
    Et donc, voici ce que j'ai codé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> def pluriel(mot) :
    ...  al = 'bal régal banal' .split()
    ...  if mot in al : return mot + 's'
    ...
    >>>>>> [pluriel(mot) for mot in al]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'al' is not defined
    Sauf que comme vous pouvez le voir, je me heurte à un message d'erreur...

  2. #2
    Membre éclairé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Billets dans le blog
    1
    Par défaut
    bé oui... al est une variable locale de ta fonction pluriel, donc inconnue au niveau global de la construction de ta liste.
    Pour info, si mot n'est pas dans bal,régal,banal, ta fonction renvoie None.
    Quelque chose me dit que ce n'est pas ce que tu attends...

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut
    Citation Envoyé par Captain'Flam Voir le message
    bé oui... al est une variable locale de ta fonction pluriel, donc inconnue au niveau global de la construction de ta liste.
    Pour info, si mot n'est pas dans bal,régal,banal, ta fonction renvoie None.
    Quelque chose me dit que ce n'est pas ce que tu attends...
    Bonjour à toi !
    Grâce à ton indication, voici ce que j'ai pu coder:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> al = 'bal régal banal' .split()
    >>> def pluriel(mot) :
    ...  al = 'bal régal banal mot' .split()
    ...  if mot in al : return mot + 's'
    ...
    >>> [pluriel(mot) for mot in al]
    ['bals', 'régals', 'banals']
    Et ça marche ! C'était donc aussi simple que ça !
    Merci beaucoup pour ton aide

  4. #4
    Membre éclairé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Billets dans le blog
    1
    Par défaut
    A mon avis, tu penses à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def pluriel( mot ) :
        al = 'bal régal banal'.split()
        if mot.endswith('al') and mot not in al :
            return mot[:-1] + 'ux'
        return mot + 's'
     
    mots = 'chaise journal bal carnaval total banal banale'.split()
     
    print [pluriel( m ) for m in mots]

Discussions similaires

  1. [Focal] Langage de programmation fonctionnelle Focal : besoin de doc
    Par djerbir dans le forum Langages fonctionnels
    Réponses: 4
    Dernier message: 14/12/2007, 23h53
  2. Quel langage pour un programme simple de calcul ?
    Par touche2clavier dans le forum Langages de programmation
    Réponses: 18
    Dernier message: 19/11/2007, 12h08
  3. Débuter en programmation fonctionnelle
    Par Woufeil dans le forum Langages fonctionnels
    Réponses: 76
    Dernier message: 17/07/2007, 13h03
  4. La programmation fonctionnelle ?
    Par Gnux dans le forum Langages de programmation
    Réponses: 12
    Dernier message: 03/07/2006, 19h00
  5. programme fortran90 qui calcule les racines d'une equation de deg 3 ?
    Par casier dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/06/2006, 17h30

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