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 :

programme python bac moyenne


Sujet :

Python

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut programme python bac moyenne
    bonjour j'essaye de faire pour le bac un programme python qui calcul la moyenne obtennu selon les différentes notes soit des coefficients , sauf que j'ai reussi a faire l'interface graphique mais pas les calcul si quelqu'un peut m'aider merci !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    En général on crée d'abord le code qui fait le travail, dans ton cas saisir les données, opérer les calculs et retourner les résultats, et ensuite seulement on se pose la question de savoir si ce serait pas plus sexy dans une interface graphique.

    Si tu montrais ce que tu as déjà écrit en expliquant où est-ce que tu coinces, ça facilitera la tâche parce que là on est dans le vide.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci de ta réponse actuellement j'ai réussi a juste faire un tableau sous Tkinter et une zone de saisie en face de chaque matiere mais mon programme ne sert a rien il y a aucun réel programme a part le graphique du tableau , je débute sur python et je nais vraiment pas comment attaquer pour faire ce programme...

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    from tkinter import *
    from math import *
    fen1 = Tk()
    txt1 = Label(fen1, text = 'mathématiques :')
    txt2 = Label(fen1, text = 'Français :')
    txt3 = Label(fen1, text = 'Histoire :')
    txt4 = Label(fen1, text = 'TPE :')
    txt5 = Label(fen1, text = 'Sciences physiques :')
    txt6 = Label(fen1, text = 'Anglais :')
    txt7 = Label(fen1, text = 'Espagnol/Allemand :')
    txt8 = Label(fen1, text = 'Philosophie :')
    txt9 = Label(fen1, text = 'Sport :')
    txt10= Label(fen1, text = 'SI :')
    txt11= Label(fen1, text = 'Francais Orale :')

    entr1 = Entry(fen1)
    entr2 = Entry(fen1)
    entr3 = Entry(fen1)
    entr4 = Entry(fen1)
    entr5 = Entry(fen1)
    entr6 = Entry(fen1)
    entr7 = Entry(fen1)
    entr8 = Entry(fen1)
    entr9 = Entry(fen1)
    entr10 = Entry(fen1)
    entr11 = Entry(fen1)

    txt1.grid(row =1)
    txt2.grid(row =2)
    txt3.grid(row =3)
    txt4.grid(row =4)
    txt5.grid(row =5)
    txt6.grid(row =6)
    txt7.grid(row =7)
    txt8.grid(row =8)
    txt9.grid(row =9)
    txt10.grid(row =10)
    txt11.grid(row =11)

    entr1.grid(row =1, column =1)
    entr2.grid(row =2, column =1)
    entr3.grid(row =3, column =1)
    entr4.grid(row =4, column =1)
    entr5.grid(row =5, column =1)
    entr6.grid(row =6, column =1)
    entr7.grid(row =7, column =1)
    entr8.grid(row =8, column =1)
    entr9.grid(row =9, column =1)
    entr10.grid(row =10, column =1)
    entr11.grid(row =11, column =1)
    fen1.mainloop()

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    voila mon premier programme python ! je t'ai ecouté jai laché tKinter et voila le programme , par ocntre l'aspect graphique rest limité ... meric de vos réponse
    a=input('quel est votre note de francais écrit ?: ')
    b=input('quel est votre note de francais orale ?: ')
    c=input('quel est votre note de tpe ?: ')
    d=input('quel est votre note de physique chimie ?: ')
    e=input('quel est votre note de mathématiques ?: ')
    f=input('quel est votre note de SI ?: ' )
    g=input('quel est votre note de histoire ?:' )
    h=input('quel est votre note de ISN ?:' )
    i=input('quel est votre note de EPS ?: ')
    j=input('quel est votre note d\'anglais ?: ')
    k=input('quel est votre note d\'espagnol ?: ')
    l=input('quel est votre note de philosophie ?: ')

    x=moyenne=(a*2+b*2+c*2+d*6+e*7+f*8+g*3+h*2+i*2+j*3+k*2+l*3)/42
    print moyenne



    if 0<=x<8 :
    print 'Vous n\'avez pas assez travailé !'
    print 'vous n\'avez pas le BAC'

    if 8<=x<10:
    print 'trop juste, vous etes au ratrapage !'
    print 'commencez à révisez !'

    if 10<=x<12:
    print 'FELICITATION ! vous avez votre BAC !'

    if 12<=x<14:
    print 'FELICITATION ! vous avez votre BAC !'
    print ' Avec menttion assez bien !'

    if 14<=x<16:
    print ' FELICITATION ! vous avez votre BAC !'
    print 'Avec mention Bien !'
    if 16<=x<=20:
    print 'FELICITATION ! vous avez votre BAC !'
    print ' Avec mention très Bien !'

    else :
    print 'Attention, vous avez fais une erreur dans la rentrée des notes ! veuillez verifier ,Merci'

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Pense à mettre ton programme dans des balises code. Surtout en python. L'indentation est importante.

    Tu a réussi. Il n'y a plus de question?

    Tu aurais pu aussi utiliser une liste de notes et une liste de coefficient.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Ben voilà, c'était pas bien chinois. Faudra donner à ton script une forme pythonique maintenant.

    En utilisant des listes au lieu de longues répétition et en plaçant les différentes parties du code dans des fonctions séparées.

    Python 2 et 3
    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
    34
    35
    36
    37
    38
    39
     
    # -*- coding: utf-8 -*-
     
    NAMES = ['Francais écrit', 'Francais oral', 'Tpe', 'Physique chimie', 
            'Mathématiques', 'Si', 'Histoire', 'ISN', 'EPS', 'Anglais', 
            'Espagnol', 'Philosophie']
     
    def get_value(name):
        while 1:
            try:
                val = input('Quel est votre note en %s : ' % name)
                # On teste s'il sagit d'une valeur numerique
                return float(val)
            except:
                # Si la donnée entrée au clavier n'est pas une donnée numérique
                # cela a levé une exception et on reste dans la boucle
                pass
     
    def get_average(values):
        # la liste des coéfficients
        cf = [2, 2, 2, 6, 7, 8, 3, 2, 2, 3, 2, 3]
        # on utilise zip() pour itérer sur les deux liste en même temps
        # donc values[0] et cf[0], values[1] et cf[1] etc..
        # sum() fera le total de la liste des (valeur*coéfficient)
        tot = sum([x * y for x, y in zip(values, cf)])
        return tot / 42
     
    if __name__ == '__main__':
        # L'exécution du code commence ici.
        # on crée une liste vide pour les resultats des cours
        results = []
        for n in NAMES:
            # pour chaque cours on va chercher la valeur avec la fonction get_value
            # et on l'ajoute à la liste avec append()
            results.append(get_value(n))
     
        # on fait calculer la moyenne par get_average en lui donnant en argument
        # la liste des points des cours
        average = get_average(results)
    Je te laisse écrire une fonction qui estimera la moyenne obtenue (average) et qui retournera le texte de sentence à afficher.

    Ensuite, tu verras comme il sera simple de placer par dessus ton interface graphique sans retoucher le code initial.

  8. #8
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci, à tous les deux. Mais vinss peut tu m'expliquer ce que tu as fait jai du mal a comprendre merci ...

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    J'ai éditer mon post, j'ai commenté le code.

  10. #10
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    merci enormément de ton aide j'ai comprix le debut mais a partir de ce moment la je ne comprend pas ... on a deja calculer la moyenne pour quoi on fait cela ? :

    if __name__ == '__main__':
    # L'exécution du code commence ici.
    # on crée une liste vide pour les resultats des cours
    results = []
    for n in NAMES:
    # pour chaque cours on va chercher la valeur avec la fonction get_value
    # et on l'ajoute à la liste avec append()
    results.append(get_value(n))

    # on fait calculer la moyenne par get_average en lui donnant en argument
    # la liste des points des cours
    average = get_average(results)

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Pour éditer du code utilise la balise code, le symbole # dans le menu.

    Le code commence ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if __name__ == '__main__':
    Son exécution du moins.

    Donc les deux fonctions qui précèdent n'ont pas encore été exécutées et ne le seront que lorsqu'on les appellera.

    La première permet de saisir les cotations et la deuxième d'en calculer la moyenne, maintenant tu dois en écrire une dans le même style pour remplacer ceci:
    if 0<=x<8 :
    print 'Vous n\'avez pas assez travailé !'
    print 'vous n\'avez pas le BAC'

    if 8<=x<10:
    print 'trop juste, vous etes au ratrapage !'
    print 'commencez à révisez !'

    if 10<=x<12:
    print 'FELICITATION ! vous avez votre BAC !'

    if 12<=x<14:
    print 'FELICITATION ! vous avez votre BAC !'
    print ' Avec menttion assez bien !'

    if 14<=x<16:
    print ' FELICITATION ! vous avez votre BAC !'
    print 'Avec mention Bien !'
    if 16<=x<=20:
    print 'FELICITATION ! vous avez votre BAC !'
    print ' Avec mention très Bien !'
    Je te donne le début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    def get_sentence(val):
    et la fin:

  12. #12
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    je suis désolé je ne voit vraiment pas comment faire, la facon d'ecrire le programme me parait etrange, comme on a pas executer le programme pq dois-je déjà faire la liste des resultat celon la note obtennue

  13. #13
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    quelqu'un peut m'aider s'il vous plait ?

  14. #14
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Les codes que tu as postés au début sont peut-être fonctionnels mais horribles car tu écris 20 fois la même chose. Or les informaticiens sont des flemmards. Il mettent en facteur commun du code pour ne pas avoir à le réécrire comme tu as fait.

    Pour ce faire, on utilise des boucles et des fonctions. Les boucles (for ...) sont capables de faire une action similaire mais adaptée pour chacune de tes matières. Et les fonctions (def ...), en python, sont une bulle à part, dans lesquelles s'exécute du code et que l'on peut appeler à n'importe quel moment (avec ou sans paramètre). La définition de la fonction n'est pas l'exécution de la fonction.

    Je n'ai pas l'intention de répéter ce que l'on peut trouver dans n'importe quel tutoriel python. Mais ici, on te dit que faire une liste de matière, entrer les coef pour chaque matière et faire une boucle pour rentrer les notes fait un code plus propre et plus court.

    Mieux que les listes dans ton cas: les dictionnaires (listes avec des champs nommé).

    Un cours ttrès concret
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  15. #15
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Salut.
    Avec mon groupe on a fignolés le code que voici:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    # -*- coding: utf-8 -*-
     
    NAMES = ['Francais écrit', 'Francais oral', 'Tpe', 'Physique chimie', 
            'Mathématiques', 'Si', 'Histoire', 'ISN', 'EPS', 'Anglais', 
            'Espagnol', 'Philosophie']
     
    def get_value(name):
        while 1:
            try:
                val = input('Quel est votre note en %s : ' % name)
                # On teste s'il sagit d'une valeur numerique
                return float(val)
            except:
                val= input>20('Quel est votre note en %s : ' % name)
                return float(val)
                # Si la donnée entrée au clavier n'est pas une donnée numérique
                # cela a levé une exception et on reste dans la boucle
                pass
     
    def get_average(values):
        # la liste des coéfficients
        cf = [2, 2, 2, 6, 7, 8, 3, 2, 2, 3, 2, 3]
        # on utilise zip() pour itérer sur les deux liste en même temps
        # donc values[0] et cf[0], values[1] et cf[1] etc..
        # sum() fera le total de la liste des (valeur*coéfficient)
        tot = sum([x * y for x, y in zip(values, cf)])
        return tot / 42
     
     
     
    if __name__ == '__main__':
        # L'exécution du code commence ici.
        # on crée une liste vide pour les resultats des cours
        results = []
        for n in NAMES:
            # pour chaque cours on va chercher la valeur avec la fonction get_value
            # et on l'ajoute à la liste avec append()
            results.append(get_value(n))
     
        # on fait calculer la moyenne par get_average en lui donnant en argument
        # la liste des points des cours
        average = get_average(results)
        print average
     
    if 0<=average<8 :
        print 'Vous n\'avez pas assez travailé !'
        print 'vous n\'avez pas le BAC'
     
    if 8<=average<10:
        print 'trop juste, vous etes au ratrapage !'
        print 'commencez à révisez !'
     
    if 10<=average<12:
        print 'FELICITATION ! vous avez votre BAC !'
     
    if 12<=average<14:
        print 'FELICITATION ! vous avez votre BAC !'
        print ' Avec menttion assez bien !'
     
    if 14<=average<16:
        print ' FELICITATION ! vous avez votre BAC !'
        print 'Avec mention Bien !'
    if 16<=average<=20:
        print 'FELICITATION ! vous avez votre BAC !'
        print ' Avec mention très Bien !'
    if average<0 and average>20:
        print 'Attention, vous avez fais une erreur dans la rentrée des notes ! veuillez verifier ,Merci'
    Mais nous n'arrivont pas a interdire l'entrée de note au dessus de 20, comme vous avez pu faire avec l'entrée de lettres, c'est à dire faire une boucle qui nous redemande la note.
    de plus on aimerai faire une interface graphique mais en introduisant from Tkinter import* rien ne change.
    Merci

  16. #16
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Pas bon du tout ça.

    Difficile de croire que vous vous y êtes mis à plusieurs pour recopier du code 'Take away' et y ajouter simplement les lignes de code que je t'ai conseillé de mettre dans une fonction.

    En plus tu parles de fignolage ...

    C'est ça le fignolage ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try:
                val = input('Quel est votre note en %s : ' % name)
                # On teste s'il sagit d'une valeur numerique
                return float(val)
            except:
                val= input>20('Quel est votre note en %s : ' % name)
                return float(val)
    Vérification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> val= input>20('Quel est votre note en: ')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'int' object is not callable
    ... ben non, ça marche pas.

    Ou alors ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if average<0 and average>20:
    average ne peut pas être à la fois inférieur à 0 et supérieur à 20

    Relis mon dernier post, crées une fonction pour l'estimation de la moyenne et pour l'interface graphique on verra après.

    Mais peut-être qu'avant d'aller plus loin une plongée dans cette littérature te permettra de gagner du temps.

    D'ici là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        print 'Vous n\'avez pas assez travailé !'
        print 'vous n\'avez pas le BAC'

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

Discussions similaires

  1. Réponses: 145
    Dernier message: 15/02/2009, 11h51
  2. Faire communiquer deux programmes python
    Par bestdomdom dans le forum Général Python
    Réponses: 5
    Dernier message: 26/10/2006, 09h30
  3. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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