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 -
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.
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..
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..
2 réponses
-
Bonjour,
Sauf erreur de ma part, ta méthode se trouve dans la class derniere_occurrence
Donc son appel devrait sûrement être du stylederniere_occurrence.boyer_moore(T,M)
-