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 :

probleme de codage de fonction basique


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 196
    Points : 61
    Points
    61
    Par défaut probleme de codage de fonction basique
    bonjour à tous voila
    j'ai un exo à faire et pardonnez car je débute vraiment sur ce langage
    coder une fonction unaire roule() avec un paramètre x,
    de sorte qu’elle ne retourne vrai que si vert(x) retourne vrai, ou que orange(x) retourne vrai
    l'exo d'avant nous disait de parametre vert(x) de facon qu'il ne retourne vrai que si x est vert ca j'ai réussi à le faire sans probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> def vert(x) : 
    ...  if x == 'vert' : return True
    ...  else : return False
    ... 
    >>> vert('vert')
    True
    >>> vert('verteee')
    False
    par contre la je bute et ca plusieurs que je suis dessus j'ai essayé bcp de chose mais en vain
    alors si quelqu'un peut m'aider
    voila ce que j'ai mis pour cet exo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def roule(x) :
    ...  if vert(x) == 'vert' : return True
    ...  else : return False
    ... 
    >>> roule(vert('vert'))
    False
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def roule(x) :
    ...  if vert : return True
    ...  else : return False
    ... 
    >>> roule(vert('vert'))
    False
    un coup de main svp

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    de sorte qu’elle ne retourne vrai que si vert(x) retourne vrai, ou que orange(x) retourne vrai
    cette seule phrase te donne la réponse à la question. c'est le cas parce que ton problème est bien formulé.

    voyons ce que tu as déjà:
    vert
    orange

    le mot que tu n'as pas encore traduit en code c'est "ou".

    écrit en pseudo code, ça donne donc ça:

    à toi de jouer

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Points : 224
    Points
    224
    Par défaut
    Citation Envoyé par djbad Voir le message
    voila ce que j'ai mis pour cet exo
    >>> def roule(x) :
    ... if vert(x) == 'vert' : return True
    ... else : return False
    ...
    >>> roule(vert('vert'))
    False
    Tu as un problème ici : tu testes si l'appel à ta fonction vert(x) retourne 'vert' ou non. Or ta fonction vert(x) retourne True ou False

    de plus tu appelles roule de cette manière
    Or ton énoncé te demande d'appeler roule avec un paramètre x, et d'appliquer vert() sur ce paramètre.

    Bref c'est plutôt quelque chose dans ce goût là (en reprenant ta syntaxe)
    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
     
    >>> def vert(x):
    ...     if x == 'vert':
    ...             return True
    ...     else:
    ...             return False
    ... 
    >>> vert('vert')
    True
    >>> def roule(x):
    ...     if vert(x) is True:
    ...             return True
    ...     else:
    ...             return False
    ... 
    >>> roule('vert')
    True
    >>> roule('vertee')
    False
    >>>
    Te reste plus qu'à gérer le cas 'orange'... kango t'as donné une piste ci-dessus.

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Salut,


    Je signale que vert() et orange() se définissent simplement par


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def vert(x):
        return x==’vert’
     
     
    def orange(x):
        return x==’orange’


    Ce qui, j’espère, donnera l’idée de concision souhaitable pour définir aussi roule()

    D’ailleurs, on peut définir roule() sans avoir défini préalablement vert() et orange() , en obtenant la même concision en traitant directement x.

    C’est sans doute nécessaire de passer par ce stade où la moindre étape algorithmique est prémachée, machée, remachée, mais j’espère que ce stade est vite dépassé pour faire prendre conscience à l’apprenti programmeur en Python que ce langage permet des raccourcis saisissants. J’aurais à enseigner Python, je squeezerais ce stade à grosses bottes dans la glaise. Ça ne m’étonnerait pas que ce soit du Swinnen, cet exercice. Ou un de ses fans.

  5. #5
    Membre expérimenté
    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
    Points : 1 384
    Points
    1 384
    Par défaut
    Citation Envoyé par eyquem Voir le message
    C’est sans doute nécessaire de passer par ce stade où la moindre étape algorithmique est prémachée, machée, remachée, mais j’espère que ce stade est vite dépassé pour faire prendre conscience à l’apprenti programmeur en Python que ce langage permet des raccourcis saisissants. J’aurais à enseigner Python, je squeezerais ce stade à grosses bottes dans la glaise. Ça ne m’étonnerait pas que ce soit du Swinnen, cet exercice. Ou un de ses fans.
    Je sens un peu d'impatience là
    Il ne faut pas oublier que le bouquin de Swinnen a pour but l'apprentissage de la programmation, pas celui de Python. Python n'est que l'outil.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 196
    Points : 61
    Points
    61
    Par défaut
    Merci
    Pardonné si j'insiste en fait j'avais un gros doute
    en essayant plusieurs possibilité
    j'ai réussi à faire ca
    def roule(x) :
    ... if x == vert(x) : return False
    ... else : return True
    ....
    et ca me donner ce que je voulais
    roule(vert('vert))
    True
    roule(vert('verte'))
    False
    je sais que ca parait incohérent mais je me dis pourquoi ca marche dans ce sens et pas dans l'autre donc je me pose encore plus de question
    je comprend peut etre mal l'énonce
    désolé d'etre redondant mais j'essaye d'apprendre
    et vous remercie pour l'aide déjà apporté

  7. #7
    Membre expérimenté
    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
    Points : 1 384
    Points
    1 384
    Par défaut
    vert('vert') renvoie True
    donc
    roule(vert('vert')) = roule(True)
    ce qui n'a pas de sens. En appelant la fonction roule avec l'argument True tu vois pourquoi elle retourne aussi True ?
    Ce à quoi tu dois arriver est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> roule('vert')
    True
    >>> roule('rouge')
    False
    >>> roule('orange')
    True
    >>> roule("n'importe quoi d'autre")
    False

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 196
    Points : 61
    Points
    61
    Par défaut
    merci ca m'aide beaucoup

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

Discussions similaires

  1. probleme de codage
    Par Hamdi_Maazoul dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 07/06/2007, 12h02
  2. probleme avec fonctions basique
    Par olivier1209 dans le forum C
    Réponses: 3
    Dernier message: 11/11/2006, 13h35
  3. Réponses: 2
    Dernier message: 31/05/2005, 09h50
  4. probleme d'appel de fonction!
    Par transistor49 dans le forum C++
    Réponses: 5
    Dernier message: 11/03/2005, 10h46
  5. Réponses: 8
    Dernier message: 13/08/2004, 12h32

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