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 :

fonction pluriel qui marche pas


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut fonction pluriel qui marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def pluriel(mot) :
    	ail == 'bail corail émail soupirail travail ventail vitrail'.split()
    	ou  == 'hibou chou genou caillou pou bijou'.split()
    	eu  == 'pneu bleu'.split()
    	au  == 'landau sarrau'.split()
    	if mot in ail : return mot[0:-2] + 'ux'
    	if mot in ou or eu or au : return mot + 'x'
    	if mot[-1] is 's' or 'z' or 'z': return mot
    	if mot[-1] is 'l' : return 'l' == 'ux'
    	if mot == 'oeil' : return  'yeux'
    	if mot == 'ail' : return 'aulx'
    	return mot + 's'
    pourquoi sa me renvoi
    >>> pluriel(bail)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'bail' is not defined
    >>> print pluriel(bail)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'bail' is not defined

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    l'enoncer de l'exercie est

    coder une fonction pluriel() pour former correctement le pluriel d!à peu près n!importe quel nom ou
    adjectif, majuscule ou minuscule ; testez-la, entre autres, sur les mots suivants": hors-d'œuvre,
    bal, régal, banal, canal, étal, pascal, portail, bétail, travail, œil, écœuré, hameçon, ex-æquo, niño,
    mépris, landau, rideau, jeu, bleu, clou, genou, prix... et tout ce qui vous passe par la tête"!

  3. #3
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Salut,


  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    bonjour, sa marche pas

    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
    19
    >>> def pluriel(mot) :
    ...     ail == 'bail corail émail soupirail travail ventail vitrail'.split()
    ...     ou  == 'hibou chou genou caillou pou bijou'.split()
    ...     eu  == 'pneu bleu'.split()
    ...     au  == 'landau sarrau'.split()
    ...     if mot in ail : return mot[0:-2] + 'ux'
    ...     if mot in ou or eu or au : return mot + 'x'
    ...     if mot[-1] is 's' or 'z' or 'z': return mot
    ...     if mot[-1] is 'l' : return 'l' == 'ux'
    ...     if mot == 'oeil' : return  'yeux'
    ...     if mot == 'ail' : return 'aulx'
    ...     return mot + 's'
    ... 
    >>> pluriel('bail')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in pluriel
    NameError: global name 'ail' is not defined
    >>>

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    bonjour,

    sa ne marche pas

    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
    19
    20
    21
    22
    23
    24
    >>> def pluriel(mot) :
    ...     ail == 'bail corail émail soupirail travail ventail vitrail'.split()
    ...     ou  == 'hibou chou genou caillou pou bijou'.split()
    ...     eu  == 'pneu bleu'.split()
    ...     au  == 'landau sarrau'.split()
    ...     if mot in ail : return mot[0:-2] + 'ux'
    ...     if mot in ou or eu or au : return mot + 'x'
    ...     if mot[-1] is 's' or 'z' or 'z': return mot
    ...     if mot[-1] is 'l' : return 'l' == 'ux'
    ...     if mot == 'oeil' : return  'yeux'
    ...     if mot == 'ail' : return 'aulx'
    ...     return mot + 's'
    ... 
    >>> pluriel('bail')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in pluriel
    NameError: global name 'ail' is not defined
    >>> pluriel('bail')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in pluriel
    NameError: global name 'ail' is not defined
    >>>

  6. #6
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Tu as une raison de doubler les signes égal ou bien c'est la faute à ton clavier ?

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Tu as une raison de doubler les signes égal ou bien c'est la faute à ton clavier ?
    je croyais que sur python egale veut dire == ??

    je voualais utliser la condition elif dans le code mais je sais pas comment car je viens de savoir que sa existe ??

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    j'ai reffais le code et sa marche

    mais pourquoi pour
    pluriel('cheval il me marque chelax??

    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
    >>> def pluriel(mot) :
    ...     ail = 'bail corail émail soupirail travail ventail vitrail'.split()
    ...     ou = 'hibou chou genou caillou pou bijou'.split()
    ...     eu = 'pneu bleu'.split()
    ...     au = 'landau sarrau'.split()
    ...     al = 'banal fatal naval natal bancal bal festival chacal carnaval cal serval'.split()
    ...     if mot in ail : return mot[0:-2] + 'ux'
    ...     if mot in ou or eu or au : return mot + 'x'
    ...     if mot[-1] is 's' or 'x' or 'z': return mot
    ...     else : return mot + 's'
    ...     if mot in al: return mot + 's'
    ...     else : mot[0:-2] + 'aux'
    ...     if mot is 'oeil' : return  'yeux'
    ...     if mot is 'ail' : return 'aulx'
    ... 
    >>> pluriel('cheval')
    'chevalx'

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Pourquoi ne pas prendre le temps de tester vos constructions a la console avant de les assembler pour en faire une fonction?

    Tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ail == 'bail corail émail soupirail travail ventail vitrail'.split()
    en vérifiant que "ail" est bien la liste attendue vous aurait pousse a relire tuto, cours, notes,... traitant de "comment faire des assignations".

    Tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if mot in ail : ZZZ = mot[0:-2] + 'ux'
    pour voir ce que ça fait dans les cas "dans" et "hors" de "ail"

    Etc..

    Une fois que vous êtes "confiant" sur ce que font vos lignes, vous pourrez essayer de les "assembler" en fonction.

    Vous apprendriez plus vite en étant un plus "actif" avec la console Python et dans la relecture de vos notes plutôt qu'en attendant de l'aide.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    bonjour,

    sa fais des heure que j'essaye de trouver mais sans vain

    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
    19
    20
    21
    22
    23
    24
    25
    26
    def pluriel(mot) :
    	ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    	ou = 'hibou chou genou caillou pou bijou'.split()
    	eu = 'pneu bleu'.split()
    	au = 'landau sarrau'.split()
    	al = 'banal fatal naval natal bancal bal festival chacal carnaval cal serval'.split()
    	if mot in ail : return mot[0 : -2] + 'ux' 
    	else : return mot + 's'
    	if mot[0 : -1] is 's' or 'x' or 'z': return mot
    	else : return mot + 's'
    	if mot is 'oeil' : return 'yeux'
    	if mot is 'ail' : return 'aulx'	
    	if mot in al: return  mot + 's' 
    	else : return mot[0 : -2] + 'aux'
     
     
    pluriel('bail')
    'baux'
    >>> pluriel('pomme')
    'pommes'
    >>> pluriel('banal')
    'banals'
    >>> pluriel('cheval')
    'chevals'
    >>> pluriel('yeux')
    'yeuxs'

  11. #11
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Salut,

    Wiztricks t'a recommandé de tester tes lignes séparément, ce qui t'aurait permis de voir ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>> l = ['a', 'e', 'f']
    >>> l1 = ['l', 'k', 'j']
    >>> if 'r' in l or l1:
    ...     print 'OK'
    ... 
    OK
    >>>
    Les opérateurs and et or séparent des assertions complètes et ne se les partagent pas.

    Autrement dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> 'r' in l
    False
    >>> 'r' in l1
    False
    >>> 'r' in l or l1
    ['l', 'k', 'j']
    Puisque 'r' in l est False or retourne le second terme qui ici est l1, une liste non vide.

    Il faut donc répéter les assertions complètes de chaque côtés des opérateurs.

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    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
    19
    #liste de mots a tester
    ... liste="hors-d'œuvre, bal, régal, banal, canal, étal, pascal, portail, bétail, travail, œil, écœuré, hameçon, ex-æquo, niño, mépris, landau, rideau, jeu, bleu, clou, genou, prix".split(', ')
    >>> def pluriel(mot) :
    ...     ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    ...     ou = 'hibou chou genou caillou pou bijou'.split()
    ...     eu = 'pneu bleu'.split()
    ...     au = 'landau sarrau'.split()
    ...     al = 'banal fatal naval natal bancal bal festival chacal carnaval cal serval'.split()
    ...     if  ord(mot[-1]) in range(65,91):
    ...       maj = 1 
    ...     else :
    ...       maj = 0
    ...     if mot in ail :
    ...             if maj is 0 : return mot[0 : -2] + 'ux'
    ...             else : return (mot[0 : -2] + 'UX')
    ... 
    >>> pluriel('BAIL')
    >>> pluriel('bail')
    'baux'
    jessaye de faire le code etape par etape pour savoir pk sa marche pas et la je vois que la deusiéme ligne il ne s'éxecute pas je pourrais savoir pourquoi ?

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par l1informatique Voir le message
    jessaye de faire le code etape par etape pour savoir pk sa marche pas et la je vois que la deusiéme ligne il ne s'éxecute pas je pourrais savoir pourquoi ?
    Ah bon, si vous aviez teste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    >>> ail
    ['bail', 'corail', 'émail', 'soupirail', 'travail', 'ventail', 'vitrail']
    >>> 'bail' in ail
    True
    >>> 'BAIL' in ail
    False
    vous poseriez une question plus précise, non?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ah bon, si vous aviez teste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    >>> ail
    ['bail', 'corail', 'émail', 'soupirail', 'travail', 'ventail', 'vitrail']
    >>> 'bail' in ail
    True
    >>> 'BAIL' in ail
    False
    vous poseriez une question plus précise, non?

    - W
    ma question c'est quand je tappe un nom meme majuscule je veux qui m'envois le pluriel de ce nom la en majuscle

    J'AI ESSAYER D'AJOUTER motmin= mot.lower()

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    >>> def pluriel(mot) :
    ...     ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    ...     ou = 'hibou chou genou caillou pou bijou'.split()
    ...     eu = 'pneu bleu'.split()
    ...     au = 'landau sarrau'.split()
    ...     al = 'banal fatal naval natal bancal bal festival chacal carnaval cal serval'.split()
    ...     motmin=mot.lower()
    ...     if  ord(mot[-1]) in range(65,91):
    ...       maj = 1 
    ...     else :
    ...       maj = 0
    ...     if motmin in ail : 
    ...             if maj is 0 : return motmin[0 : -2] + 'ux'
    ...             elif maj is 1 : return motmin[0 : -2] + 'UX'
    ... 
     
     
     
    #liste de mots a tester
    liste="hors-d'œuvre, bal, régal, banal, canal, étal, pascal, portail, bétail, travail, œil, écœuré, hameçon, ex-æquo, niño, mépris, landau, rideau, jeu, bleu, clou, genou, prix".split(', ')
    def pluriel(mot) :
    	ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    	ou = 'hibou chou genou caillou pou bijou'.split()
    	eu = 'pneu bleu'.split()
    	au = 'landau sarrau'.split()
    	al = 'banal fatal naval natal bancal bal festival chacal carnaval cal serval'.split()
    	motmin=mot.lower()
    	if  ord(mot[-1]) in range(65,91):
    	  maj = 1 
    	else :
    	  maj = 0
    	if motmin in ail : 
    		if maj is 0 : return motmin[0 : -2] + 'ux'
    		elif maj is 1 : return motmin[0 : -2] + 'UX'
     
    >>> pluriel('BAIL')
    'baUX'
    >>>

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par l1informatique Voir le message
    ma question c'est quand je tappe un nom meme majuscule je veux qui m'envois le pluriel de ce nom la en majuscle

    J'AI ESSAYER D'AJOUTER motmin= mot.lower()
    L'ordinateur se sait pas ce que vous voulez faire: il se contente d’exécuter vos instructions...
    S'il n'y a pas quelque par "remettre en majuscule", il ne le fait pas...
    c'est très bourrin...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  16. #16
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    pourriez vous me dire il est ou le souci dans cette ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elif mot[:-1] is ('s' or 'x' or 'z'): return mot
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elif mot in 'eu' or mot in 'au' : return mot + 's'
    je pense que je dois savoir un trucs qui manque dans ces ligne la car sa marche pas

    merci

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Si vous avez écrit ces lignes, vous devriez savoir pour quoi.
    Et expliquer les raisons pour lesquelles in, or, is étaient appropries dans ces cas.
    Dans le cas contraire, relisez vos notes de cours et testez vos constructions a la console pour vous assurer que ça le fait.
    Mais je vous l'ai déjà dit çà, non?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  18. #18
    Membre actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Points : 215
    Points
    215
    Par défaut
    Comme ces codes te posent un soucis , tu devrais les refaire seuls à part dans la console pour les tester .

    Par contre , l'idée que tous les mots au pluriel retournent en minuscule , ce serait très bien de trouver cette chose
    On peut créer une autre variable , mais la méthode lower() suffit en principe
    genre : " if motmin == 'mot.lower()' : return mot " mais je pense que ce code est faux ...........

    En tout cas ,ce code n'est pas bien utilisé "if ord(mot[-1]) in range(65,91): " ,et ta variable maj ne sert à rien ,et c'est dommage !

    Citation Envoyé par wiztricks Voir le message
    L'ordinateur se sait pas ce que vous voulez faire: il se contente d’exécuter vos instructions...
    S'il n'y a pas quelque par "remettre en majuscule", il ne le fait pas...
    c'est très bourrin...

    - W
    Donc il faut tout penser à l'avance .
    _""""Cats have a big heart ^^ unlike some bad people (whose will never change in their brain) """

  19. #19
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    bonjour,

    je sais parfaitement pourquoi j'ai écris le code j'ai tout refais

    sa marche parconte else non ?

    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
    19
    20
    #liste de mots a tester
    liste="hors-d'œuvre, bal, régal, banal, canal, étal, pascal, portail, bétail, travail, œil, écœuré, hameçon, ex-æquo, niño, mépris, landau, rideau, jeu, bleu, clou, genou, prix".split(', ')
    def pluriel(mot) :
    	ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    	ou = 'hibou chou genou caillou pou bijou'.split()
    	eu = 'pneu bleu'.split()
    	au = 'landau sarrau'.split()
    	al = 'banal fatal régal naval natal bancal bal festival chacal carnaval cal serval pascal'.split()
    	if mot in ail : return mot[0 : -2] + 'ux'
    	elif mot in ou : return mot + 'x'
            elif mot in eu : return mot + 's'
            elif mot in au : return mot + 's'
    	elif mot[-1] is 's': return mot 
            elif mot[-1] is 'z': return mot
            elif mot[-1] is 'x': return mot
    	elif mot is 'oeil': return 'yeux'
    	elif mot is 'ail' : return 'aulx'	
    	elif mot in al : return  mot + 's' 
    	elif mot not in al : return mot[:-2] + 'aux'
    	else : return mot + 'x'
    je sens que je commence a etre insupportable je comprend car meme moi je deviens folle avec ce code

  20. #20
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Kurodiam Voir le message
    Par contre , l'idée que tous les mots au pluriel retournent en minuscule , ce serait très bien de trouver cette chose
    Plutôt que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> def pluriel(mot) :
    ...     ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    ...     ou = 'hibou chou genou caillou pou bijou'.split()
    ...     eu = 'pneu bleu'.split()
    ...     au = 'landau sarrau'.split()
    ...     al = 'banal fatal naval natal bancal bal festival chacal carnaval cal serval'.split()
    ...     ....
    Ecrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> def pluriel_ail(mot) :
    ...     ail= 'bail corail émail soupirail travail ventail vitrail'.split()
    ...     if mot in ail : 
    ...          return mot[0 : -2] + 'ux'
    >>> def pluriel_ou(mot) :
    ...     ou = 'hibou chou genou caillou pou bijou'.split()
    ...     ....
    >>> def pluriel_eu(mot) :
    ...     eu = 'pneu bleu'.split()
    ...     ....
    >>> def pluriel_al(mot) :
    ...     al = 'banal fatal naval natal bancal bal festival chacal carnaval cal serval'.split()
    ...     ....
    On a donc alors une liste de fonctions a appeler, la première qui retourne autre chose que rien aura su traiter le mot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> def _plurial(mot):
    ...     functions = [ pluriel_ail, pluriel_ou, pluriel_eu, pluriel_al,... ]
    ...     for f in functions:
    ...         m = f(mot)
    ...         if m: return m
    L'avantage est qu'on peut tester et mettre au point les différentes fonctions séparément.

    Si a la fin _plurial sait gérer les mots en minuscules, on l'emballe dans un plurial qui:
    1. met le mot en minuscules,
    2. l’expédie a _plurial
    3. applique .swapcase au résultat.

    Cette séquence d’opérations décrite en français doit se retrouver dans le code, genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def plurial(mot):
    ...    m = mot.lower()   #1
    ...    r = _plurial(m)      #2
    ...    if m != mot:          #3
    ...        r = r.swapcase()
    ...    return r
    Ce qui transforme l'exercice en assemblage de petits bouts qui marchent plutôt que construire un château de cartes...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [AC-2013] Fonction compte qui marche pas bien
    Par djibouli dans le forum Macros Access
    Réponses: 4
    Dernier message: 12/07/2014, 10h41
  2. Fonction qui marche pas sous IE
    Par okoweb dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/10/2010, 17h13
  3. fonction drawrect qui marche pas bien..
    Par pikaTuX dans le forum Objective-C
    Réponses: 2
    Dernier message: 22/07/2010, 13h07
  4. fonction javascript qui marche pas
    Par iam dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/02/2008, 14h46
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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