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 :

Mettre des fonctions dans une liste sans qu'elles soient lancées [Python 3.X]


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Mettre des fonctions dans une liste sans qu'elles soient lancées
    Bonjour,
    Je voudrai créer une liste et, mettre des fonctions que j'ai crée sans que ces fonctions se lancent, pour que je puisse choisir au hasard une des fonctions dans la liste et lancer seulement la fonction qui a été choisi. Lorsque je crée la liste, toutes les fonctions se lancent (ce que je ne veux pas ).

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from random import *
     
    def a():
        print("oui")
     
     
    def b():
        print("non")
     
    liste=[a(),b()]
     
     
    c=choice(liste)
    Puis j'ai essayé cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from random import *
     
    def a():
        print("oui")
     
     
    def b():
        print("non")
     
    liste=[a,b]
     
     
    c=choice(liste)
    mais lorsque je veux afficher c (donc la fonction qui a été choisi aléatoirement) cela m'affiche <function b at 0x05806270>.
    Un petit peu d'aide serait la bienvenue merci beaucoup.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Vous avez choisi une fonction au hasard, et donc quand vous demandez c, vous avez bien une fonction, preuve l'interpréteur vous l'indique.

    Si vous voulez l'appel à cette fonction du hasard, il faut l'appeler !

    sans print car vous utilisez print dans des fonctions.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est la 2ème solution qui marche, puisque dans ce cas, la liste contient les adresses des fonctions. Mais pour les lancer ensuite, il ne faut pas oublier les parenthèses:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def a():
        print("oui")
     
    def b():
        print("non")
     
    liste=[a,b] # enregistre les adresses des fonctions dans la liste
     
    liste[0]() # => lance la fonction a qui affiche oui
    liste[1]() # => lance la fonction b qui affiche non
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Merci beaucoup ! , j'ai donc appliqué ce que vous m'avez dis ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from random import *
     
    def a():
        print("oui")
     
     
    def b():
        print("non")
     
    liste=[a,b]
     
     
    c=choice(liste)
    c()
    Ce qui fonctionne parfaitement. Merci beaucoup d'avoir utilisé votre temps libre pour me répondre car vous m'avez sauvé la vie !

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

Discussions similaires

  1. Mettre des noms dans une liste
    Par pitchu dans le forum R
    Réponses: 6
    Dernier message: 06/10/2017, 08h42
  2. Réponses: 3
    Dernier message: 19/03/2009, 01h07
  3. Stocker des fonctions dans une liste ou un dico
    Par Mistervanhalen dans le forum Général Python
    Réponses: 2
    Dernier message: 21/01/2009, 13h33
  4. Mettre des couleurs dans une zonne de liste
    Par moilou2 dans le forum IHM
    Réponses: 2
    Dernier message: 07/06/2008, 09h36
  5. Mettre des images dans une liste déroulante
    Par PrinceMaster77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 01/12/2006, 15h35

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