Problème d'execution d'un script en python

Résolu
limbaon9 Messages postés 46 Statut Membre -  
limbaon9 Messages postés 46 Statut Membre -
Bonjour tout le monde. J'ai ecrit un programme en python sur l'analyse textuelle et j'ai un problème d’exécution.
class derniere_occurrence(object):
    def __init__(self,M,A):
        """Générer un dictionnaire avec la dernière occurrence de chaque alphabet
        lettre à l'intérieur du motif.
        
         Remarque: Cette fonction utilise str.rfind, qui est déjà un modèle
        algorithme de correspondance. Il existe des moyens plus «basiques» pour générer ce
        dictionnaire"""
        
        self.occurrences=dict()
        for L in A:
            self.occurrences[L] = M.rfind(L)
            
    def __appel__(self,L):
        """Renvoie la dernière position de la lettre spécifiée à l'intérieur du motif.
        Renvoie -1 si la lettre n'est pas trouvée dans le motif"""
        return self.occurrences[L]
        
        
    def boyer_moore(T,M):
        """Trouve l'occurrence du motif dans le texte."""
        A = set(T)
        derniere = derniere_occurrence(M,A)
        m = len(M)
        n = len(T)
        i = m - 1  # texte index
        j = m - 1  # motif index
        while i < n:
            if T[i] == M[j]:
                if j == 0:
                    return i
                else:
                    i -= 1
                    j -= 1
            else:
                l = derniere(T[i])
                i = i + m - min(j, 1+l)
                j = m - 1 
        return -1
        
### TEST DES FONCTION ###
if __name__ == '__main__':
    def apercu(T,M):
        print 'Texte: %s' % T
        p = boyer_moore(T,M)         
        print 'Trouvé: %s%s' % ('.'*p, M)
            
    T1 = 'abacaabadcabacabaabb'
    M1 = 'abacab'
    resultat1=apercu(T1, M1)
    print(resultat1)

Et quand j'essaye d’exécuter le script ca m'affiche " NameError: global name 'boyer_moore' is not defined " je sais que l'erreur vient de cette ligne mais je ne vois pas en quoi cette ligne peut constituer une erreur sachant que boyer_moore(T,M) est une méthode bien définie. Est ce que quelqu'un pourrait bien m'aider à résoudre ce problème.
Merci d'avance..
A voir également:

2 réponses

jordane45 Messages postés 40050 Statut Modérateur 4 754
 
Bonjour,

Sauf erreur de ma part, ta méthode se trouve dans la class derniere_occurrence

Donc son appel devrait sûrement être du style
derniere_occurrence.boyer_moore(T,M) 

0
jordane45 Messages postés 40050 Statut Modérateur 4 754
 
D’ailleurs, je ne vois pas non plus l'instanciation de ta class dans ton script.

class B(object):
    def foo(self):
        print 'Foo'

    def bar(this_object):
        this_object.foo()

b = B()
b.bar() # prints 'Foo'
0
limbaon9 Messages postés 46 Statut Membre > jordane45 Messages postés 40050 Statut Modérateur
 
Merci pour votre réponse et j'ai essayé de corriger tout ce qui était faux mais quand je met la ligne 45 en commentaire comme par hasard y'a plus d'erreur de syntaxe. De ce fait l'erreur provient de cette ligne.
0
jordane45 Messages postés 40050 Statut Modérateur 4 754 > limbaon9 Messages postés 46 Statut Membre
 
ben oui.. on sait que l'erreur vient de la ligne 45
du moins.. celle la :
p = boyer_moore(T,M)         

ce n'est pas un hasard ... surtout si tu as lu mes réponses précédentes...

Donc.. qu'as tu essayé de corriger ?
Montres ton "nouveau" code si tu veux de l'aide.
0
limbaon9 Messages postés 46 Statut Membre
 
Merci au final j'ai pu trouver ma source d'erreur ^^
0