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 :

Optimisation - moyenne pondérée


Sujet :

Python

  1. #1
    Nouveau candidat au Club Avatar de EdyLinux
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 1
    Par défaut Optimisation - moyenne pondérée
    Bonjour à tous/toutes,

    Ayant du temps de libre entre mes études, je me suis mis à apprendre le langage python (bien que peu en rapport avec mes études, j'ai toujours voulu apprendre un langage de programmation )

    Je voulais donc tester de faire un programme calculant une moyenne pondérée : J'ai réussi à faire un code, mais il est d'une part imparfait, et d'autre part horriblement long. Je voudrais savoir si vous auriez des idées d'améliorations / modifications pour rendre ce code meilleur.

    Dans mon cas, les matières ont un coefficient, ainsi que les notes : Il y à en réalité 8 matières différentes, je ne donne que le code pour la première matière, la CGE. J'ai élaboré mon code de la façon suivante : saisie de toute les notes dans l'ordre, ainsi que des coefficients. Si le nombre de coefficients est différent de celui des notes, un message d'erreur apparaît. Selon le nombre de note, la moyenne est calculée selon les notes et les coefficients saisies (la note [0] correspondant au coefficient [0] etc).

    Le principal défaut de ce code est qu'il n'est pas "automatisé" : si je prendre 5 notes, la moyenne ne peut pas se calculer. Auriez vous une idée pour remplaçer les if/elif ou une structure différente à proposer ?

    Merci d'avance pour vos réponses
    Edy

    Voici le code effectué sur PyCharm :

    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
    f __name__ == '__main__':
        # Saisie des notes de CGE
        marks_CGE = input("Insérer les notes de CGE").split("-")
        marks_length = len(marks_CGE)
        print("Vous avez saisi", marks_length, " notes")
        # Saisie des coefficients de CGE
        coef_CGE = input("Insérer les coefficients de CGE").split("-")
        coef_length_CGE = len(coef_CGE)
        print("Vous avez saisi,", coef_length_CGE, "coefficients")
        # Verification que tous les notes et coefficients sont présents.
        if len(marks_CGE) != len(coef_CGE):
            print("Les champs ne correspondent pas, réésayer !")
        else:
            print("Aucune erreur détectée, démarrage du calcul...")
        # Calcul de la moyenne de CGE si il n'y à qu'une note
        if marks_length == 1:
            AVERAGE_CGE = (float(marks_CGE[0])*float(marks_CGE[0]))
            print(AVERAGE_CGE)
        # Calcul de la moyenne de CGE si il y a 2 notes
        elif marks_length == 2:
            AVERAGE_CGE = (float(marks_CGE[0]) * float(marks_CGE[0]))+(float(marks_CGE[1])*float(marks_CGE[1]))
            print(AVERAGE_CGE)
        # Calcul de la moyenne de CGE si il y a 3 notes
        elif marks_length == 3:
            AVERAGE_CGE = ((float(marks_CGE[0])*float(coef_CGE[0]))+(float(marks_CGE[1])*float(coef_CGE[1]))+(float(marks_CGE[2])*float(coef_CGE[2])))/((float(coef_CGE[0]))+(float(coef_CGE[1]))+(float(coef_CGE[2])))
            print(AVERAGE_CGE)

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 716
    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 716
    Par défaut
    Salut,

    Citation Envoyé par EdyLinux Voir le message
    Auriez vous une idée pour remplaçer les if/elif ou une structure différente à proposer ?
    Avec Python, la somme du produit des éléments de même indice de deux listes A et B peut d'écrire: sum(a*b for a, b in zip(A, B)).
    Normalement, en ayant un peu appris à programmer avec Python avec un tuto. vous sauriez écrire çà avec une boucle "for":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    s = 0
    for i in range(len(A)):
         s += A[i] * B[i]
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Access] Comment faire un moyenne pondérée dans une requete ?
    Par megapacman dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2007, 09h23
  2. Réponses: 4
    Dernier message: 28/07/2006, 08h31
  3. Requête sql, moyenne pondérée
    Par ouiffi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/07/2006, 11h03
  4. URGENT : Moyenne pondéré?
    Par cquadjul dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/04/2006, 19h08
  5. Moyenne pondérée
    Par Tijee dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/01/2006, 21h13

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