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 :

Mais que fait ce "return" ? [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Mais que fait ce "return" ?
    Bonsoir à tous
    Ci-dessous une petit morceau de code très simple dont l'objet n'échappera à personne..
    Le problème (essayez chez vous comme disent les profs pressés) est le suivant :
    Si j'entre "A" ou "C" directement, le return fonctionne : "A" -----> "ajout"
    mais si j'entre "a", déclenchant normalement le message d'erreur, et qu'au retour à l' "input" j'entre "A", la bonne réponse n'est pas transmise par le "return"
    (avec debugger, j'ai bien "A" dans rep après le 2eme input mais redevient "a" à l'exécution du return !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def entre_choix ():
        rep=input("Ajouter au dictionnaire (A) ou le consulter (C) ? ")
        if rep  in ("A","C") :
            return rep
        else :
            print ("réponse non valide, recommencez...")
            entre_choix ()
     
    if entre_choix ()  == "A" :
        print ("ajout")
    else :
        print ("consultation")
    Merci de votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    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 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Salut,

    Votre fonction "entre_choix" s'appelle fonction récursive car elle s'appelle elle même si le choix n'est pas valide.
    Et le soucis est que dans votre cas, ce que la fonction retourne n'étant pas retourné... çà ne remonte pas.
    Ajoutez return devant l'appel récursif et çà va le faire...

    Ceci dit, comme le but de ce genre d'exo. est de s'habituer aux boucles "while"...

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,


    Ajoutez return devant l'appel récursif et çà va le faire...


    - W
    Humm...merci pour la réponse, mais çà ne fonctionne pas...ou alors, je n'ai pas compris où il faut ajouter ce return
    J'ai aussi essayé avec "while", mais c'est idem

  4. #4
    Membre régulier
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 75
    Points : 103
    Points
    103
    Par défaut
    Salut,

    test ici pour voir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def entre_choix ():
        rep=input("Ajouter au dictionnaire (A) ou le consulter (C) ? ")
        if rep  in ("A","C") :
            return rep
        else :
            print ("réponse non valide, recommencez...")
            return entre_choix ()
    Après sincèrement, le mieux pour se genre d'exercice c'est de s’entraîner au boucle while sauf si tu ne connais pas encore, car mine de rien ça résout pas mal de chose, après je suis pas du tout un expert, je ne suis qu'au chapite 11 de la méthode swinnen mais...

    ...Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while 1:
        rep = input("Choisissez (A)jout, (C)onsulter, (T)erminer: ")
        if rep == "T" or rep == "t":
            print("Terminé")
            break
        elif rep not in "AaCcTt" :
            print("*** ERREUR ***\n" +\
                  "Veuillez réessayer")
        elif rep == "A" or rep == "a":
            print("Ajout")
        elif rep == "C" or rep == "c":
            print("Consultation")

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci à papyfouette et wiztricks
    J'ai trouvé çà qui fonctionne :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def entre_choix ():
        rep=""
        while rep not in ("A","C") :
            rep=input("Ajouter au dictionnaire (A) ou le consulter (C) ? ")
            if rep in ("A","C") :
                break
            print ("Réponse invalide, recommencez...")
        return rep
     
    if entre_choix ()  == "A" :
        print ("ajout")
    else :
        print ("consultation")

  6. #6
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par phau1607 Voir le message
    Merci à papyfouette et wiztricks
    J'ai trouvé çà qui fonctionne :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def entre_choix ():
        rep=""
        while rep not in ("A","C") :
            rep=input("Ajouter au dictionnaire (A) ou le consulter (C) ? ")
            if rep in ("A","C") :
                break
            print ("Réponse invalide, recommencez...")
        return rep
     
    if entre_choix ()  == "A" :
        print ("ajout")
    else :
        print ("consultation")
    Bonjour,
    Pour éviter le break:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def entre_choix ():
        rep=""
        while rep not in ("A","C") :
            rep=input("Ajouter au dictionnaire (A) ou le consulter (C) ? ")
            if rep not in ("A", "C"):
                print ("Réponse invalide, recommencez...")
        return rep
     
    if entre_choix ()  == "A" :
        print ("ajout")
    else :
        print ("consultation")
    Clodion

    PS: si c'est le cas, pensez à mettre "Résolu"…

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut RESOLU
    Evident !!
    Merci
    (par contre c'est dans l'intitulé qu'il faut spécifié "résolu" ? )

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    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 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Salut,

    Ca serait plus concis en enlevant tout ce qui ne sert à rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def entre_choix ():
        while True:
            rep=input("Ajouter au dictionnaire (A) ou le consulter (C) ? ")
            if rep in ("A","C") :
                return rep
            print ("Réponse invalide, recommencez...")

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

  9. #9
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par phau1607 Voir le message
    Evident !!
    Merci
    (par contre c'est dans l'intitulé qu'il faut spécifié "résolu" ? )
    Bonjour,
    Oui, et il y a un bouton en bas de la page pour cela!
    Clodion

    PS: la solution de wiztricks est encore meilleure!

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut RESOLU
    Après l'évidence, l'élégance ...
    Merci wiztricks

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par phau1607 Voir le message
    (par contre c'est dans l'intitulé qu'il faut spécifié "résolu" ? )
    Non, c'est en cliquant sur le bouton "Résolu", sous le dernier message de la discussion (fait).
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

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

Discussions similaires

  1. [ Eclipse3.0 ] Mais que fait le debogueur ?
    Par Bz dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 07/07/2005, 14h31
  2. mais que fait upper_range() dans un multimap?
    Par porcher dans le forum C++
    Réponses: 7
    Dernier message: 18/02/2005, 22h21
  3. Mais que fait static ???
    Par elsargento dans le forum C
    Réponses: 4
    Dernier message: 25/09/2003, 09h55

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