Partage
  • Partager sur Facebook
  • Partager sur Twitter

Regroupez des tâches en utilisant des fonctions

    27 décembre 2021 à 16:30:24

    j'ai un problème sur le cour "Regroupez des tâches en utilisant des fonctions" je croyais avoir plutôt bien compris le cour jusqu'à l'exo.

    consignes :

    Créez une fonction permettant de calculer le produit d'une liste de nombres

    code :

    def produit_entiers(liste_entiers):
        resultat = 0
        for calcul in liste_entiers:
            resultat = resultat + calcul
        return resultat
    • Partager sur Facebook
    • Partager sur Twitter
      27 décembre 2021 à 16:36:05

      Il faut ensuite appeler ta fonction avec son paramètre qui est ici une liste de nombre.

      def produit_entiers(liste_entiers):
          resultat = 0
          for calcul in liste_entiers:
              resultat = resultat + calcul
          return resultat
      
      res = produit_entiers([12, 34, 43, 45, 67])
      print(res)



      • Partager sur Facebook
      • Partager sur Twitter
        27 décembre 2021 à 16:43:56

        enfaite le probleme c'est que en dessous nous avons une ligne de code que nous sommes sencé pas touché la voici 
        def produit_entiers(liste_entiers):
            resultat = 0
            for calcul in liste_entiers:
                resultat = resultat + calcul
            return resultat
        
        assert 1 == produit_entiers([1, 1, 1])
        assert 6 == produit_entiers([1, 2, 3])
        assert 0 == produit_entiers([1, 2, 3, 90, 0])
        • Partager sur Facebook
        • Partager sur Twitter
          27 décembre 2021 à 16:48:22

          Ah ok ce n'est pas somme d'entier qui est demandé, mais une multiplication (produit)

          exemple 1 * 1 * 1 = 1

          • Partager sur Facebook
          • Partager sur Twitter
            27 décembre 2021 à 16:52:28

            un truc comme sa ? 
            def produit_entiers(liste_entiers):
                resultat = 0
                for calcul in liste_entiers:
                    resultat = resultat * produit_entiers[1] * produit_entiers[2]
                return resultat
            • Partager sur Facebook
            • Partager sur Twitter
              27 décembre 2021 à 17:13:52

              Non, c'est plus simple, un peu comme l'exo précédent :

              def produit_entiers(liste_entiers):
                  resultat = 1
                  for entier in liste_entiers:
                      resultat = resultat * entier
                  return resultat
               
              assert 1 == produit_entiers([1, 1, 1])
              assert 6 == produit_entiers([1, 2, 3])
              assert 0 == produit_entiers([1, 2, 3, 90, 0])

              Il faut que tu comprennes pourquoi cette fois-ci résultat est initialisé à 1

              Et quand tu utilises des listes l'index démarre à 0 et pas à 1 ( liste_entiers[0] et pas produit_entiers[1] )

              Je pense qu'il faut que tu travailles d'avantage Python car tu mélanges un peu tout ;)

              -
              Edité par Diablo76 27 décembre 2021 à 17:14:39

              • Partager sur Facebook
              • Partager sur Twitter
                27 décembre 2021 à 17:21:25

                a oui effectivement j'ai compris pourquoi fallait initialiser à 1 mais a quoi sert assert ?

                • Partager sur Facebook
                • Partager sur Twitter
                  27 décembre 2021 à 17:33:37

                  LukaPieres a écrit:

                  a oui effectivement j'ai compris pourquoi fallait initialiser à 1 mais a quoi sert assert ?


                  L’instruction assert de Python est une aide au débogage qui teste une condition. Si la condition est vraie, cela ne fait rien et ton programme continue simplement à s’exécuter. Mais si la condition d’assertion est fausse, elle lève une exception AssertionError.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 décembre 2021 à 17:37:34

                    a ok mais dcp quand je fais "run" ya pas d'erreur mais ya pas de résultat non plus
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 décembre 2021 à 17:42:51

                      Parce que ton résultat est bon et donc assert ne lève pas d'exception, modifie pour tester.

                      assert 2 == produit_entiers([1, 1, 1])


                      De plus la comparaison dans l'assert devrait plutot être :

                      produit_entiers([1, 1, 1]) == 1



                      -
                      Edité par Diablo76 28 décembre 2021 à 4:50:11

                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 décembre 2021 à 17:48:57

                        Bah oui, c'est le but, car 1*1*1, ça ne fait pas 2
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 décembre 2021 à 17:50:12

                          a oui ok j'avais pas compris le nombre de derrière
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 mars 2022 à 16:44:25

                            Bonjour à tous,

                            Quand j'effectue l'exercice, il me met une assertioneror avec la ligne

                            assert 0 == porduit_entiers([1,2,3,90,0])

                            mais quand j'écris mon code dans sublimetext, il ne me marque aucune erreur. Voilà la réponse qui sort sur la sandbox.

                              File "/home/nt-user/workspace/produit_entiers.py", line 11, in <module>
                                assert 0 == produit_entiers([1, 2, 3, 90, 0])
                            AssertionError


                            Que puis-je faire?

                            Merci pour vos réponses

                            -
                            Edité par Piopiote 19 mars 2022 à 16:46:35

                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 mars 2022 à 12:36:06

                              fait un affichage de ton calcul pour cette liste  avec un print(produit_entiers([1, 2, 3, 90, 0])) pour voir le résultat qui devrait être 0
                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 mars 2022 à 9:16:18

                                Effectivement lorsque je tape print(produit_entiers([1,2,3,90,0]) cela affiche bien 0
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 mars 2022 à 10:43:42

                                  si l'assert te renvoie toujours un erreur, poste ton code (via le bouton </>) pour voir où peut être l'erreur
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 mars 2022 à 19:11:45

                                    Il ne met plus d'erreur, l'assert était déjà fais quand j'ai fais ce chapître. Merci à vous
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      24 mars 2022 à 19:27:43

                                      d'où venait l'erreur d'assertion signalé quelques messages plus haut alors ?? o_O
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        25 mars 2022 à 6:47:22

                                        Je pense que le problème de mon exercice était que je ne faisais pas de boucle dans la fonction dans la sandbox. Une fois que l'exo a été modifié avec la boucle, plus de problèmes du coup.
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Regroupez des tâches en utilisant des fonctions

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        • Editeur
                                        • Markdown