Browse Source

pile avec 2 l mais quel horreur

master
manon 1 month ago
parent
commit
8a0a0a14df
  1. 16
      oui.py

16
oui.py

@ -52,18 +52,18 @@ class Expression:
def npi2tree(lst):
"""Convertit une liste représentant une expression en notation polonaise inversée en un arbre d'expression."""
pille = Pile ()
pile = Pile ()
for element in lst:
# Si c'est un opérateur (+, -, * ou /), on crée un nœud opérateur
if element in ('+', '-', '*', '/','^'):
droit = pille.depiler()
gauche = pille.depiler()
pille.empiler(Expression(element, gauche, droit)) # Créer un nouvel arbre et empiler
droit = pile.depiler()
gauche = pile.depiler()
pile.empiler(Expression(element, gauche, droit)) # Créer un nouvel arbre et empiler
else:
# Sinon, ça veut dire que c'est un nombre donc on le convertit et on l'empile.
pille.empiler(Expression(int(element), None, None))
pile.empiler(Expression(int(element), None, None))
return pille.depiler() # Retourne l'arbre complet
return pile.depiler() # Retourne l'arbre complet
@ -85,7 +85,7 @@ assert exp.evalue() == 24
exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça
assert exp.evalue() == 42
liste_npi = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3)
arbre = npi2tree(liste_npi) # Convertit la liste en un arbre
lst = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3)
arbre = npi2tree(lst) # Convertit la liste en un arbre
print(arbre.evalue()) # Affiche : 42
Loading…
Cancel
Save