Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algorithme_Dichotomie

HELP :)

    15 mai 2013 à 22:09:07

    Salut à  tout la communauté de SDZ et au programmeur python !

    Pour m’entraîner on m'a conseillé de faire des algorithmes de recherches (Recherche séquentielle, Dichotomie) !

    L'algorithme de recherche séquentielle fonctionne très bien mais celui de dichotomie ne fonctionne et impossible de trouver mon erreur :\ Une gentille personne pour m'aider et m'expliquer l'erreur "TypeError: 'C' is an invalid keyword argument for this function" ? Merci d'avance !:)

    Voilà le code (PS: Variable D équivaut à  début et F à fin...)

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    from random import randint
    
    
    
    
    def liste_alea(n):
        L=[]
        for i in xrange(n):
            L.append(randint(1,100))     #Ou L=L+[randint(1,100)]
        L.sort()
        print L
        return L
    
    
    def recherche_dicho(L,x):
        D=0
        F=(L-1)
        int(C=(D+F)/2)
        while D<F and x!=L[C]:
            if x<L[C] :
                F=C-1
            else :
                D=C+1
            int(C=(D+F)/2)
        if x==L[C]:
            print "x est trouvé au rang",C
        else :
            print "x n'est pas dans liste"
                    
             
            
          
    
    n=100
    maliste=liste_alea(n)
    recherche_dicho(101,maliste)



    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2013 à 22:18:29

      Un conseil: lis la PEP8. Lorsqu'un code est mal espace, ca donne pas envie au gens de lire ton code, donc de t'aider.

      PS:

      Le int dans:

      int(C=(D+F)/2)

      ne sert  a rien.

      Tu veux probablement faire:

      C = int((D+F) / 2) 

       Aussi:

      Ta premiere fonction tient en deux lignes:

      def rand_list(n):
          return sorted(randint(1, 100) for _ in range(n))
      

      -
      Edité par stackOverflow 15 mai 2013 à 22:29:45

      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2013 à 22:23:51

        Merci pour le lien, je suis encore débutant ;)

        Par contre maintenant  j'ai cette erreur : "TypeError: 'int' object has no attribute '__getitem__' " et ça j'ai jamais vue..

        • Partager sur Facebook
        • Partager sur Twitter
          16 mai 2013 à 10:44:26

          def recherche_dicho(L,x):
          
          recherche_dicho(101,maliste)
          
          • Partager sur Facebook
          • Partager sur Twitter
          OCaml, un langage expressif et performant qui vous ferait du bien.
            16 mai 2013 à 19:31:29

            Qu'est ce que tu veux faire avec ton L[C] ? L est un entier, donc ça ne marche pas.

            • Partager sur Facebook
            • Partager sur Twitter

            Algorithme_Dichotomie

            × 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