|
@ -25,6 +25,7 @@ class Expression: |
|
|
else: |
|
|
else: |
|
|
droite_val = 0 |
|
|
droite_val = 0 |
|
|
|
|
|
|
|
|
|
|
|
#Les opérations possibles : addition, soustraction, mutliplication, division, puissance. |
|
|
if self.val_racine == '+': |
|
|
if self.val_racine == '+': |
|
|
return gauche_val + droite_val |
|
|
return gauche_val + droite_val |
|
|
elif self.val_racine == '-': |
|
|
elif self.val_racine == '-': |
|
@ -33,6 +34,8 @@ class Expression: |
|
|
return gauche_val * droite_val |
|
|
return gauche_val * droite_val |
|
|
elif self.val_racine == '/': |
|
|
elif self.val_racine == '/': |
|
|
return gauche_val / droite_val |
|
|
return gauche_val / droite_val |
|
|
|
|
|
elif self.val_racine == '^': |
|
|
|
|
|
return gauche_val ** droite_val |
|
|
else : |
|
|
else : |
|
|
raise ValueError ("Cette commande ne peut pas être effectuer") |
|
|
raise ValueError ("Cette commande ne peut pas être effectuer") |
|
|
|
|
|
|
|
@ -51,7 +54,7 @@ class Expression: |
|
|
pille = Pile () |
|
|
pille = Pile () |
|
|
for element in lst: |
|
|
for element in lst: |
|
|
# Si c'est un opérateur (+, -, * ou /), on crée un nœud opérateur |
|
|
# Si c'est un opérateur (+, -, * ou /), on crée un nœud opérateur |
|
|
if element in ('+', '-', '*', '/'): |
|
|
if element in ('+', '-', '*', '/','^'): |
|
|
droit = pille.depiler() |
|
|
droit = pille.depiler() |
|
|
gauche = pille.depiler() |
|
|
gauche = pille.depiler() |
|
|
pille.empiler(Expression(element, gauche, droit)) # Créer un nouvel arbre et empiler |
|
|
pille.empiler(Expression(element, gauche, droit)) # Créer un nouvel arbre et empiler |
|
|