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

Tkinter Python Discussion :

calcul de moyenne


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut calcul de moyenne
    Voila j'ai un probleme
    en ISN ont a un devoir
    on doit transformée un programme fait precedement pourqu il soit dans l interface graphyque
    voila l'intitulé exact
    calcul est affichage de la moyenne "en temps réel" à chaque saisie d'une nouvelle note
    une note par champ de saisie
    le nombre de champ de saisie étant demendé au début

    le programme de base c'est sa


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    nombre=input("combien avez vous de note ? ")
    nombre=int(nombre)
    somme=0
    for i in range(1,nombre+1):
        note=input("quelle note avez vous ? ")
        note=float(note)
        somme=note+somme
        moyenne=somme/i
        print("la moyenne est de : ",moyenne)


    et pour l'instant le max que j'arrive a faire c'est sa



    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
    from tkinter import *
    liste=[]
     
    def moyenne():
        global liste
        liste.append(note)
        moyenne=sum(liste)/len(liste)
        moyenne=DoubleVar()
        label2=Label(fenetre,text="moyenne : ")
        label2.pack(side=BOTTOM)
        label3=Label(fenetre,textvariable=moyenne)
    def note():
        frame.destroy()
        calculer=Button(fenetre,text="calculer",command=moyenne)
        calculer.pack(side=RIGHT)
        for i in range(1,nombre.get()+1):
            note=DoubleVar()
            cds2=Entry(fenetre,textvariable=note)
            cds2.pack(side=TOP)
            return note.get()
    fenetre=Tk()
    fenetre.title("calcul de moyenne")
    fenetre.geometry("500x500+30+30")
    frame=Frame(fenetre,borderwidth=1,relief=GROOVE)
    frame.pack(side=TOP)
    label=Label(frame,text="combien de note : ")
    label.pack(side=TOP)
    nombre=IntVar()
    cds=Entry(frame,textvariable=nombre)
    cds.pack(side=TOP)
    valider=Button(frame,text="valider",command=note)
    valider.pack(side=BOTTOM)
    fenetre.mainloop()


    mais non seulement je n'obtien qu'un champ de saisie mais en plus sa plante en ce qui concerne le sum(liste)
    et le prof n'aime pas qu'on utilise les global


    aidez moi je suis déséspérer

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 25
    Points : 39
    Points
    39
    Par défaut
    BONJOUR

    1-il faut éviter de donner un même nom a une variable et a une fonction
    2-dans ta fonction moyenne tu fais liste.append(note) cette variable note vient d'ou ???
    3-revoir tes fonctions car elle ne reçoivent pas de paramétres par conséquent ne peuvent pas traité les info
    4-la liste ne contient pas des int mais la fonction note

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Je te remercie de ta réponse mais je ne comprend pas normalement note est un float
    Note vient du champ entry

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    De plus les paramètres à mettre dans la definition de la fonction font plante le programme c est pas faute d avoir essayer

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 25
    Points : 39
    Points
    39
    Par défaut
    OK , sinon il faut plutot enlever le return de ta boucle for au niveau de fonction note() pour que tu puisse voir les autres champs apparaitre

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Sa c est déjà fait mais je ne peut toujours pas calculer la moyenne

    Le return je l avais parce que je pensai que sa éviterai le global dans la fonction moyenne

    Se que je ne comprend pas c est pourquoi c est si compliquer alors que le programme de base était simple

    Il y aurai une solution pour calculer la moyenne en temp réel à chaque fois qu on appuis sur le bouton calculer

    C est à dire un champ de saisie s affiche on appuie sur calculer on obtient la moyenne et le deuxième champ s affiche et ainsi de suite jusqu'à se qu on entré le nombre de note donné au départ

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 25
    Points : 39
    Points
    39
    Par défaut
    Je ne peut te donner une solution codé mais je vois le probleme et il vient du fait que ta fonction note() recoit un parametre et cree les champs dynamiquement et ta fonction moyenne elle doit calculer en recuperant les valeurs des champs et c'est là le bas blesse car note ne lui ramene pas les valeurs des champs créés dynamiquement
    donc songe a une methode de parcours de tes champs dynamique et recupere les valeurs pour l'envoyer a ta fonction moyenne. mais fais le en appliquant les conseils donnés ci-dessus

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    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 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Citation Envoyé par myst28 Voir le message
    Se que je ne comprend pas c est pourquoi c est si compliquer alors que le programme de base était simple

    Il y aurai une solution pour calculer la moyenne en temp réel à chaque fois qu on appuis sur le bouton calculer
    C'est compliqué parce qu'avec une interface graphique vous devez utiliser un autre modèle de programmation dit "évènementiel" alors qu'avec la console, c'est "séquentiel". De ce fait, lorsque l'utilisateur appuie sur un bouton, çà va appeler une chose qui ressemble à une fonction mais qu'il est préférable d'appeler "callback": car ce sera la bibliothèque graphique qui va appeler cette fonction là et récupérer ce qu'elle retourne. C'est ce qui rend difficile de faire communiquer ce genre de fonction là avec le reste du programme: impossible de ne pas utiliser de variables globales ou des "objets".
    Si votre professeur est resté évasif sur la programmation des interfaces graphiques, vous pouvez toujours vous rabattre sur le Swinnen. Vous y trouverez exemples et explications.

    Une mouture simplifiée de votre programme pour vous montrer la mécanique:
    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
    import tkinter as tk
     
    count = 3
     
    root = tk.Tk()
     
    entry = tk.Entry()
    entry.pack()
     
    quit_btn = tk.Button(text='calculer')
    quit_btn.pack()
     
    moyenne = tk.Label(text='moyenne:   ')
    moyenne.pack()
     
    somme = 0
    x = 0
    def do_calculs():
        global x, somme
     
        s = entry.get()
        nb = int(s)
        somme += nb
        moyenne.configure(text='moyenne: %d' % (somme / (x+1)))
        entry.delete(0, 'end')
     
        x += 1
        if x == count:
            quit_btn.configure(text='Quit', command=root.quit)
     
    quit_btn.configure(command=do_calculs)
    root.mainloop()
    Mais, on peut aussi virer le callback et rester proche du modèle séquentiel:
    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
    import tkinter as tk
     
    count = 3
     
    root = tk.Tk()
     
    entry = tk.Entry()
    entry.pack()
     
    quit_btn = tk.Button(text='calculer', command=root.quit)
    quit_btn.pack()
     
    moyenne = tk.Label(text='moyenne:   ')
    moyenne.pack()
     
    somme = 0
    for x in range(count):
        root.mainloop()  # la séquence d'instructions bloquera ici jusqu'au click sur quit_btn
        s = entry.get()
        nb = int(s)
        somme += nb
        moyenne.configure(text='moyenne: %d' % (somme / (x+1)))
        entry.delete(0, 'end')
     
    quit_btn.configure(text='Quit')
    root.mainloop()
    note: il y a les même variables "globales"... Mais comme j'ai supprimé le callback, plus la peine d'utiliser "global".

    - W

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    merci infiniment pour ta réponse
    sa marche enfin comme je veux
    bon faut encore que je l'améliore mais sa fonctionne enfin
    merci encore et bonne année 2016 et beaucoup de réussite

    merci a vous deux de m'avoir répondue et apporté des solutions

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

Discussions similaires

  1. [VBA-E] problème de calcul de moyenne
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/04/2006, 18h13
  2. [Oracle] Calcul de moyenne par module
    Par naazih dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/04/2006, 15h38
  3. Programmation Shell avec Red Hat Calcul de moyenne
    Par jcpoulard dans le forum Linux
    Réponses: 3
    Dernier message: 22/02/2006, 23h08
  4. methode qui calcul une moyenne du traffic
    Par siry dans le forum Développement
    Réponses: 7
    Dernier message: 05/05/2005, 18h16
  5. calculer une moyenne avec une requete externe
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 17h02

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