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 :

Problème sortie de la valeur d'une variable d'une fonction


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Problème sortie de la valeur d'une variable d'une fonction
    Bonsoir,

    Une partie de mon programme consiste a entrér son nom, qui est alors associé à une variable nom1, je cherche à sortir la valeur de cette variable en dehors de cette fonction, donc de réutiliser le nom dans des labels. J ai regardé des cours sur le return et le global, que je joint ci-dessous, lorsque je rentre le nom de ma fonction tout simplement le comme dans les exemples name'event' is not defined.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    a = 10		# variable globale
     
    def mafonction():
        global a	# la variable est maintenant globale
        a = 20
        print(a)
        return
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> print(a)
    10
    >>> mafonction()
    20
    >>> print(a)
    20
    Mexemple avec juste return et voici ma fonction:

    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
    pf=Tk()#pf=pileface
    pf['bg']='white'
    pf.title('Twenty sticks')
     
    reponse1= Entry(pileface2)
    reponse1.grid(row=2,column=2)
     
    def nom1(event):
        global nom1
        nom1=reponse1.get()
        print(nom1)
        player1.configure(text=reponse1.get())
        #nom1=str(nom1)
        return nom1
    #nom1(event) ceci ne marche pas comme dans les exemples
    reponse1.bind("<Return>",nom1)
     
     
    player1= Label(pileface2, text="Joueur 1")
    player1.grid(row=3, column=2, padx=15,pady=15)

    Merci de votre aide

  2. #2
    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 778
    Points
    36 778
    Par défaut
    Salut,

    Citation Envoyé par Equinox612 Voir le message
    J ai regardé des cours sur le return et le global, que je joint ci-dessous, lorsque je rentre le nom de ma fonction tout simplement le comme dans les exemples name'event' is not defined.
    Sauf dire qu'un nom1 à la fois variable et fonction n'est pas une bonne idée, çà ne devrait pas gêner et le bout de code que vous avez posté est "correct" sauf qu'il manque des bouts pour le faire fonctionner et les lignes que Python sort en erreur histoire de s'assurer que vous regardez bien où il faut.

    - 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
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci de votre réponse, mais je change le nom de la variable nom 1, qui sera définit avec un global mais je vois pas pourquoi python me dit que event n'est pas défini c'est ca que je ne comprends parce que selon les exemples, la valeur est ressortie et devrait s'afficher, mais comment définir le event alors ?
    Ce codes est censé marcher 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
    pf=Tk()#pf=pileface
    pf['bg']='white'
    pf.title('Twenty sticks')
     
    reponse1= Entry(pileface2)
    reponse1.grid(row=2,column=2)
     
    def nom1(event):
        global nom12
        nom12=reponse1.get()
        print(nom12)
        player1.configure(text=reponse1.get())
        return 
    nom1(event)
    reponse1.bind("<Return>",nom1)
     
     
    player1= Label(pileface2, text="Joueur 1")
    player1.grid(row=3, column=2, padx=15,pady=15)
    Merci

  4. #4
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par Equinox612 Voir le message
    Merci de votre réponse, mais je change le nom de la variable nom 1, qui sera définit avec un global mais je vois pas pourquoi python me dit que event n'est pas défini c'est ca que je ne comprends parce que selon les exemples, la valeur est ressortie et devrait s'afficher, mais comment définir le event alors ?
    Ce codes est censé marcher non ?
    En fait, lorsque vous écrivez: reponse1.bind("<Return>", nom1), nom1 est un "callback" (et plus qu'une simple fonction).
    C'est tkinter qui va l'appeler avec un objet "event" en paramètre.
    Si vous écrivez nom1(event) sans avoir défini event, Python n'aime pas...
    Mais comme cette fonction ne doit être appelée que lorsque l'utilisateur entre <Return> pour valider l'entrée, pourquoi l'appeler depuis votre programme?

    Ceci dit, rien ne vous empêche de faire l'appel avec nom1(123), Python aura son event et comme la fonction ne s'en sert pas...



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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Je ne comprends pas très bien, je pense que je sait pas totalement a quoi correspond chaque ligne de mon code, je vais indiquer ce a quoi sert chaque ligne et pouvez vous me dire si c'est bon svp

    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
    pf=Tk()#pf=pileface#ici on cree la fenetre
    pf['bg']='white'
    pf.title('Twenty sticks')
     
    reponse1= Entry(pileface2)#la je cree un widget permettant d entrer sa réponse
    reponse1.grid(row=2,column=2)
     
    def nom1(event):#creer ma fonction relie à Evènement= utilisateur appuie sur entrée
        global nom12#je met en global la variable que je dois ressortir
        nom12=reponse1.get()#j'associe ce que a la variable ce que l'utilisateur a entrée
        print(nom1)
        player1.configure(text=reponse1.get())#je configure le label qui indique la réponse entrée par le joueur
        #nom1=str(nom1)
        return nom1#j'utilise return pour ressortir la variable
     
    reponse1.bind("<Return>",nom1)#evenment lorsqu'on appuye sur entrée déclenche la fonction nom1 ?
     
     
    player1= Label(pileface2, text="Joueur 1")#label pour accueillir la réponse
    player1.grid(row=3, column=2, padx=15,pady=15)
    Je viens de regarder et je ne comprends la notion de callback
    Merci

  6. #6
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par Equinox612 Voir le message
    Je ne comprends pas très bien, je pense que je sait pas totalement a quoi correspond chaque ligne de mon code, je vais indiquer ce a quoi sert chaque ligne et pouvez vous me dire si c'est bon svp
    Votre code sera "bon" si l'interpréteur Python accepte de l'exécuter et s'il fonctionne comme vous l'attendez.

    ligne 5: d'où sort pileface2?
    ligne 9/10: vous déclarez une variable globale mais vous ne vous en servez pas ailleurs.
    ligne 11/14: la variable est devenu le nom de la fonction.

    A quoi çà sert de commenter des lignes de code que vous n'arrivez pas à relire par vous même ?
    Vous avez des tuto. pour apprendre à programmer. Il faut passer du temps à faire les exercices pour assimiler ce que programmer veut dire. Ce boulot là, personne ne peut le faire pour vous. On ne peut que vous encourager à persévérer.

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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Ligne 5 le pileface2 sort d'une frame que j'ai oublié de mettre ensuite les lignes 11 et 14 sont une erreur de frappe.
    Je vais allez voir les cours mais juste comment pourrais-je définir event en faites ?

    Merci

  8. #8
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par Equinox612 Voir le message
    Je vais allez voir les cours mais juste comment pourrais-je définir event en faites ?
    Dans les tutos, vous apprendriez que ce n'est pas nécessaire i.e. ce que vous demandez est inutile et ne sert à rien.


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

Discussions similaires

  1. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  2. Valeur d'une variable devient une variable
    Par dragondumond dans le forum VB.NET
    Réponses: 21
    Dernier message: 09/04/2013, 17h07
  3. Réponses: 0
    Dernier message: 21/01/2009, 13h52
  4. Réponses: 12
    Dernier message: 06/08/2008, 14h39
  5. Valeur d'e variable d'une fct dans autre fonction
    Par Torpedox dans le forum Langage
    Réponses: 3
    Dernier message: 11/11/2005, 08h48

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