Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mise en forme

Problème pour mettre en forme

    29 juin 2020 à 15:25:15

    Bonjour tout le monde.

    Dans un projet en python j'aimerais afficher correctement le calcul de moyenne que je fais. 

    Par exemple avec ceci:

    ('1', '2', '2', '2', '3', '9', '5', '2', '4', '12')   <class 'tuple'> 

    que je récupère en parametre j'arrive à faire le calcul pour obtenir la moyenne mais j'aimerais avoir un affichage de ce type:

    (1*2+2*2+3*9+5*2+4*12)/(2*2*9*2*12)

    Je pensais utiliser .join() mais je ne m'en sort pas avec cette fonction. 

    Quelqu'un pourrais me donner une piste pour réussir ma mise en forme s'il vous plait :D

    • Partager sur Facebook
    • Partager sur Twitter
      29 juin 2020 à 16:00:41

      À ton niveau le code ci-dessous devrait être compréhensible sans commentaire,

      notes_coeff = ('1', '2', '2', '2', '3', '9', '5', '2', '4', '12')
      
      somme = 0
      somme_coeff = 0
      for i in range(0, len(notes_coeff), 2):
          note, coeff = float(notes_coeff[i]), float(notes_coeff[i+1])
          somme += note * coeff
          somme_coeff += coeff
      
      moyenne = somme / somme_coeff
      print(moyenne)
      

      Maintenant si besoin, n'hésite pas à poser des questions.

      Donc pour la ligne reste à ajouter quelques lignes,

      notes_coeff = ('1', '2', '2', '2', '3', '9', '5', '2', '4', '12')
      
      somme = 0
      somme_coeff = 0
      calcul = []
      for i in range(0, len(notes_coeff), 2):
          note, coeff = float(notes_coeff[i]), float(notes_coeff[i+1])
          somme += note * coeff
          somme_coeff += coeff
          calcul.append(f"{notes_coeff[i]}*{notes_coeff[i+1]}")
      
      ligne = '+'.join(calcul)
      moyenne = somme / somme_coeff
      print(ligne)
      print(moyenne)
      


      EDIT:

      Un peu plus complexe,

      notes_coeff = ('1', '2', '2', '2', '3', '9', '5', '2', '4', '12')
      
      somme = 0
      somme_coeff = 0
      for i, note in enumerate(notes_coeff[::2]):
          coeff = float(notes_coeff[i+1])
          somme += float(note) * coeff
          somme_coeff += coeff
      
      moyenne = somme / somme_coeff
      print(moyenne)
      




      -
      Edité par fred1599 29 juin 2020 à 16:12:31

      • Partager sur Facebook
      • Partager sur Twitter

      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)

        29 juin 2020 à 16:08:10

        fred1599 
        Merci beaucoup j'ai bien compris le code :D

        -
        Edité par LokiOdinson 29 juin 2020 à 16:08:57

        • Partager sur Facebook
        • Partager sur Twitter
          29 juin 2020 à 18:36:49

          @fred1599:
          Il y avait une autre solution avec un join, mais j'avoue qu'elle est moins efficace et moins  élégante.
          Je la donne tout de même:
          -
          notes_coeff = ('1', '2', '2', '2', '3', '9', '5', '2', '4', '12')
          somme = 0
          somme_coeff = 0
          calcul = []
          for i in range(0, len(notes_coeff), 2):
              note, coeff = float(notes_coeff[i]), float(notes_coeff[i+1])
              somme += note * coeff
              somme_coeff += coeff
              calcul.append('*'.join([notes_coeff[i], notes_coeff[i+1]]))  # c'est ici la différence
          ligne = '+'.join(calcul)
          moyenne = somme / somme_coeff
          print(ligne)
          print(moyenne)
          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

            1 juillet 2020 à 8:27:07

            Un autre :

            notes_coeff = ("1", "2", "2", "2", "3", "9", "5", "2", "4", "12")
            
            somme = 0
            somme_coeff = 0
            
            for note_coeff in zip(notes_coeff[::2], notes_coeff[1::2]):
                note, coeff = map(float, note_coeff)
                somme += note * coeff
                somme_coeff += coeff
            
            moyenne = somme / somme_coeff
            print(moyenne)
            


            encore un autre :

            notes_coeff = ("1", "2", "2", "2", "3", "9", "5", "2", "4", "12")
            
            somme = 0
            somme_coeff = 0
            
            notes_coeff = [float(el) for el in notes_coeff]
            for note, coeff in zip(notes_coeff[::2], notes_coeff[1::2]):
                somme += note * coeff
                somme_coeff += coeff
            
            moyenne = somme / somme_coeff
            print(moyenne)
            



            Mais ça serait quand même mieux de récupérer les notes et les coeff dans deux listes différentes.

            -
            Edité par thelinekioubeur 1 juillet 2020 à 8:30:40

            • Partager sur Facebook
            • Partager sur Twitter

            Mise en forme

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown