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): def npi2tree(lst):
"""Convertit une liste représentant une expression en notation polonaise inversée en un arbre d'expression.""" """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: 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 = pile.depiler()
gauche = pille.depiler() gauche = pile.depiler()
pille.empiler(Expression(element, gauche, droit)) # Créer un nouvel arbre et empiler pile.empiler(Expression(element, gauche, droit)) # Créer un nouvel arbre et empiler
else: else:
# Sinon, ça veut dire que c'est un nombre donc on le convertit et on l'empile. # 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 exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça
assert exp.evalue() == 42 assert exp.evalue() == 42
liste_npi = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3) lst = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3)
arbre = npi2tree(liste_npi) # Convertit la liste en un arbre arbre = npi2tree(lst) # Convertit la liste en un arbre
print(arbre.evalue()) # Affiche : 42 print(arbre.evalue()) # Affiche : 42
Loading…
Cancel
Save