Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmer fonction valeur absolue

Sujet résolu
    5 octobre 2012 à 22:25:38

    Bonjour, je souhaite programmer une fonction max qui renvoie la plus grande valeur qu'on envoi à cette fonction. Cependant je ne veux pas utiliser de if, while etc...
    (a+b+abs(a-b))/2 me permet d'obtenir la valeur maximale entre a et b. Mais j'ai besoin de la fonction abs. Or je ne sais pas comment la programmer autrement qu'avec la fonction max. Est-ce que quelqu'un peut m'aider pour ça ? merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      5 octobre 2012 à 23:12:35

      genre:

      def abs(n):
          return math.sqrt(n**n)
      


      ou:

      def abs(n):
          return (n,-n)[n<0]
      


      sinon:

      def max(a,b):
          return (a,b)[a<b]
      


      ou encore:

      def max(a,b):
          return a>b and a or b
      


      etc, etc, etc ...
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

      Anonyme
        6 octobre 2012 à 0:12:18

        franchement, autant utiliser la fonction max déjà existante.

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 octobre 2012 à 8:09:11

          avec un dict:
          def abs(x):
             return {True: x, False: -x}[x >= 0]
          

          Mais la fonction abs est built-in :)
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            6 octobre 2012 à 9:48:05

            Bonjour,

            Je ne comprends pas bien ce qu'il faut faire, mais s'il faut identifier l'élément maxi d'une liste en valeur absolu, on pourrait faire:

            L = [1, -2, 5, -9, 3]
            
            x = max([abs(i) for i in L])
            
            print x
            9
            


            Et si on n'a pas droit à abs:

            L = [1, -2, 5, -9, 3]
            
            x = max([i for i in L if i>=0] + [-i for i in L if i<0])
            print x
            9
            
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              6 octobre 2012 à 9:56:10

              Sinon il y à ça aussi

              >>> max([-i if i<0 else i for i in L])
              9
              
              • Partager sur Facebook
              • Partager sur Twitter
                6 octobre 2012 à 10:16:22

                Merci j'ai ma réponse !
                fred1599 : c'est juste que je voulais la programmer pour m'entrainer.
                • Partager sur Facebook
                • Partager sur Twitter
                  6 octobre 2012 à 11:20:48

                  Citation : mercurial17

                  Merci j'ai ma réponse !



                  c'est quoi finalement ?
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Python c'est bon, mangez-en. 

                    6 octobre 2012 à 11:44:03

                    Eh bien tout ce que vous m'avez donné me convient mais mon préféré est celui là
                    def abs(x):
                       return {True: x, False: -x}[x >= 0]
                    

                    josmiley : c'est pas plutôt n*n ou n**2 au lieu de n**n ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 octobre 2012 à 12:09:22

                      Citation : mercurial17

                      Eh bien tout ce que vous m'avez donné me convient mais mon préféré est celui là

                      def abs(x):
                         return {True: x, False: -x}[x >= 0]
                      




                      misère ...

                      Citation : mercurial17


                      josmiley : c'est pas plutôt n*n ou n**2 au lieu de n**n ?



                      oui

                      :p
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Python c'est bon, mangez-en. 

                        6 octobre 2012 à 12:35:56

                        c'est quoi le critère ? les accolades ça fait joli ?

                        créer un dictionnaire juste pour ça, j'vois pas ...

                        j'ai pas testé mais:

                        def abs(n):
                            return n>-n and n or -n
                        


                        doit sûrement être plus efficace.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Python c'est bon, mangez-en. 

                        Anonyme
                          6 octobre 2012 à 12:52:55

                          Citation

                          Eh bien tout ce que vous m'avez donné me convient mais mon préféré est celui là



                          Euh oui mais ça permet de déterminer la valeur absolue, rien à voir avec la solution au problème, enfin dans le sens que c'est incomplet.

                          C'est la valeur max que l'on doit déterminer, non?

                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 octobre 2012 à 13:02:06

                            Non c'est parce que je commence juste le python et je comprends mieux cette façon
                            Edit : Oui c'est la fonction max que je veux mais j'ai déjà la formule, il me fallait juste la fonction valeur absolue.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Programmer fonction valeur absolue

                            × 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