Problème de multiple renvoi
Voilà j'utilise Python 3.1.1 pour un DM d'algorithmique...
Et j'ai vous vous en douter un problème. En effet il m'est demander de créer une fonction de recherche auto-adaptative sur un type de dictionnaire définie comme tel:
(le type n'est pas a modifier puisqu'il fait parti de l'énoncer)
Code:
1 2 3 4 5 6 7 8 9
|
class noeud(object):
"la structure noeud d'un arbre ternaire"
def __init__(self,car,present,gauche=None,milieu=None,droit=None):
self.car=car
self.present=present
self.gauche=gauche
self.milieu=milieu
self.droit=droit |
J'ai préalablement créer des fonctions rotationDroite et rotationGauche qui utilise la structure pour faire pivoté les nœud et visiblement elles marchent.
Mais mon problème réside dans la recherche: il faut que ma fonction prenne en argument un dictionnaire et un mot et renvoi une valeur booléenne et un dictionnaire qui et le même que celui de l'entré mais réorganisé pour un accès plus rapide au dernier mot utilisé... Bref...
Le problème ne vient pas de l'algorythme mais de la syntaxe, le code que j'ai écris et le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
def rechercheAutoadaptive(dico,mot):
if dico!=None:
if len(mot)==1 and dico.car==mot[0]:
return dico.present,dico
elif mot[0]==dico.car:
return (recherche(dico.milieu,mot[1:]))
elif mot[0]<dico.car:
BOOLE,dico.gauche = recherche(dico.gauche,mot) #BOOLE et la valeur de
if BOOLE == True: #la recherhce dans le sous arbre
dico = rotationDroite(dico)
return BOOLE,dico
elif mot[0]>dico.car:
BOOLE,dico.droit = recherche(dico.droit,mot)
if BOOLE == True:
dico = rotationDroite(dico)
return (verassite,dico) |
Mais voilà... Tout aurai été trop beau si sa avait marché...
A l'éxecution je rencontre le message suivant :
Citation:
File "C:\Python\vosNoms.py", line 113, in rechercheAutoadaptive
BOOLE,dico.gauche = recherche(dico.gauche,mot) #BOOLE et la valeur de
TypeError: 'bool' object is not iterable
Es-que quelqu'un pourrai m'aider svp ?? car je planche et je trouve pas mon erreur...
D'avance merci.