diff --git a/projet_calculatrice.py b/projet_calculatrice.py index 608db07..97c5245 100644 --- a/projet_calculatrice.py +++ b/projet_calculatrice.py @@ -64,18 +64,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 + if element in ('+', '-', '*', '/','^'): + 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 def evaluer_expression(): expression = entry.get() @@ -106,8 +106,8 @@ btn_calculer.grid(row=4, column=0, columnspan=2) label_2 = tk.Label(fen, text="Résultat: ") label_2.grid(row=5, column=0, columnspan=2) - -label_2 = tk.Label(fen, text=evaluer_expression().resultat) +canvas.create_text(250, 50,text=evaluer_expression(),font="Dubai 20",fill="blue") +label_2 = tk.Label(fen, text=evaluer_expression()) label_2.grid() # Lancement de l'interface graphique @@ -116,44 +116,45 @@ fen.mainloop() #test: -exp = Expression(5,None,None) -assert exp.evalue() == 5 - -exp = Expression('+', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça -assert exp.evalue() == 11 - -#exp = Expression('+', 8, 3)#mais ça marche pas comme ça, je sais pas trop comment régler ça -#assert exp.evalue() == 11 - -exp = Expression('*', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça -assert exp.evalue() == 24 - -exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça -assert exp.evalue() == 42 - -lst = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3) -arbre = Expression.npi2tree(lst) # Convertit la liste en un arbre - -print(arbre.evalue()) # Affiche : 42 - -# Test: Expression simple de somme -exp = Expression('+', Expression(8, None, None), Expression(3, None, None)) -assert exp.evalue() == 11, f"Test échoué: {exp.evalue()}" # Vérifie que 8 + 3 = 11 - -# Test: Expression simple de multiplication -exp = Expression('*', Expression(4, None, None), Expression(5, None, None)) -assert exp.evalue() == 20, f"Test échoué: {exp.evalue()}" # Vérifie que 4 * 5 = 20 - -# Test: Expression avec une soustraction -exp = Expression('-', Expression(20, None, None), Expression(5, None, None)) -assert exp.evalue() == 15, f"Test échoué: {exp.evalue()}" # Vérifie que 20 - 5 = 15 - -# Test: Test d'une expression valide en NPI (notation polonaise inversée) -# Correspond à: 6 * (4 + 3) -lst = ["6", "4", "3", "+", "*"] -arbre = Expression.npi2tree(lst) -assert arbre.evalue() == 42, f"Test échoué: {arbre.evalue()}" # Vérifie que 6 * (4 + 3) = 42 +# exp = Expression(5,None,None) +# assert exp.evalue() == 5 +# +# exp = Expression('+', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça +# assert exp.evalue() == 11 +# +# #exp = Expression('+', 8, 3)#mais ça marche pas comme ça, je sais pas trop comment régler ça +# #assert exp.evalue() == 11 +# +# exp = Expression('*', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça +# assert exp.evalue() == 24 +# +# exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça +# assert exp.evalue() == 42 +# +# lst = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3) +# arbre = Expression.npi2tree(lst) # Convertit la liste en un arbre +# +# print(arbre.evalue()) # Affiche : 42 +# +# # Test: Expression simple de somme +# exp = Expression('+', Expression(8, None, None), Expression(3, None, None)) +# assert exp.evalue() == 11, f"Test échoué: {exp.evalue()}" # Vérifie que 8 + 3 = 11 +# +# # Test: Expression simple de multiplication +# exp = Expression('*', Expression(4, None, None), Expression(5, None, None)) +# assert exp.evalue() == 20, f"Test échoué: {exp.evalue()}" # Vérifie que 4 * 5 = 20 +# +# # Test: Expression avec une soustraction +# exp = Expression('-', Expression(20, None, None), Expression(5, None, None)) +# assert exp.evalue() == 15, f"Test échoué: {exp.evalue()}" # Vérifie que 20 - 5 = 15 +# +# # Test: Test d'une expression valide en NPI (notation polonaise inversée) +# # Correspond à: 6 * (4 + 3) +# lst = ["6", "4", "3", "+", "*"] +# arbre = Expression.npi2tree(lst) +# assert arbre.evalue() == 42, f"Test échoué: {arbre.evalue()}" # Vérifie que 6 * (4 + 3) = 42 +# +# # Test: Expression avec division +# exp = Expression('/', Expression(10, None, None), Expression(2, None, None)) +# assert exp.evalue() == 5, f"Test échoué: {exp.evalue()}" # Vérifie que 10 / 2 = 5 -# Test: Expression avec division -exp = Expression('/', Expression(10, None, None), Expression(2, None, None)) -assert exp.evalue() == 5, f"Test échoué: {exp.evalue()}" # Vérifie que 10 / 2 = 5 diff --git a/temp.py b/temp.py index ecad6e4..9f0d916 100644 --- a/temp.py +++ b/temp.py @@ -64,18 +64,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 + if element in ('+', '-', '*', '/','^'): + 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 def evaluer_expression(): expression = entry.get() @@ -106,8 +106,8 @@ btn_calculer.grid(row=4, column=0, columnspan=2) label_2 = tk.Label(fen, text="Résultat: ") label_2.grid(row=5, column=0, columnspan=2) - -label_2 = tk.Label(fen, text=evaluer_expression().resultat) +canvas.create_text(250, 50,text=evaluer_expression(),font="Dubai 20",fill="blue") +label_2 = tk.Label(fen, text=evaluer_expression()) label_2.grid() # Lancement de l'interface graphique @@ -116,44 +116,44 @@ fen.mainloop() #test: -exp = Expression(5,None,None) -assert exp.evalue() == 5 - -exp = Expression('+', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça -assert exp.evalue() == 11 - -#exp = Expression('+', 8, 3)#mais ça marche pas comme ça, je sais pas trop comment régler ça -#assert exp.evalue() == 11 - -exp = Expression('*', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça -assert exp.evalue() == 24 - -exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça -assert exp.evalue() == 42 - -lst = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3) -arbre = Expression.npi2tree(lst) # Convertit la liste en un arbre - -print(arbre.evalue()) # Affiche : 42 - -# Test: Expression simple de somme -exp = Expression('+', Expression(8, None, None), Expression(3, None, None)) -assert exp.evalue() == 11, f"Test échoué: {exp.evalue()}" # Vérifie que 8 + 3 = 11 - -# Test: Expression simple de multiplication -exp = Expression('*', Expression(4, None, None), Expression(5, None, None)) -assert exp.evalue() == 20, f"Test échoué: {exp.evalue()}" # Vérifie que 4 * 5 = 20 - -# Test: Expression avec une soustraction -exp = Expression('-', Expression(20, None, None), Expression(5, None, None)) -assert exp.evalue() == 15, f"Test échoué: {exp.evalue()}" # Vérifie que 20 - 5 = 15 - -# Test: Test d'une expression valide en NPI (notation polonaise inversée) -# Correspond à: 6 * (4 + 3) -lst = ["6", "4", "3", "+", "*"] -arbre = Expression.npi2tree(lst) -assert arbre.evalue() == 42, f"Test échoué: {arbre.evalue()}" # Vérifie que 6 * (4 + 3) = 42 - -# Test: Expression avec division -exp = Expression('/', Expression(10, None, None), Expression(2, None, None)) -assert exp.evalue() == 5, f"Test échoué: {exp.evalue()}" # Vérifie que 10 / 2 = 5 \ No newline at end of file +# exp = Expression(5,None,None) +# assert exp.evalue() == 5 +# +# exp = Expression('+', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça +# assert exp.evalue() == 11 +# +# #exp = Expression('+', 8, 3)#mais ça marche pas comme ça, je sais pas trop comment régler ça +# #assert exp.evalue() == 11 +# +# exp = Expression('*', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça +# assert exp.evalue() == 24 +# +# exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça +# assert exp.evalue() == 42 +# +# lst = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3) +# arbre = Expression.npi2tree(lst) # Convertit la liste en un arbre +# +# print(arbre.evalue()) # Affiche : 42 +# +# # Test: Expression simple de somme +# exp = Expression('+', Expression(8, None, None), Expression(3, None, None)) +# assert exp.evalue() == 11, f"Test échoué: {exp.evalue()}" # Vérifie que 8 + 3 = 11 +# +# # Test: Expression simple de multiplication +# exp = Expression('*', Expression(4, None, None), Expression(5, None, None)) +# assert exp.evalue() == 20, f"Test échoué: {exp.evalue()}" # Vérifie que 4 * 5 = 20 +# +# # Test: Expression avec une soustraction +# exp = Expression('-', Expression(20, None, None), Expression(5, None, None)) +# assert exp.evalue() == 15, f"Test échoué: {exp.evalue()}" # Vérifie que 20 - 5 = 15 +# +# # Test: Test d'une expression valide en NPI (notation polonaise inversée) +# # Correspond à: 6 * (4 + 3) +# lst = ["6", "4", "3", "+", "*"] +# arbre = Expression.npi2tree(lst) +# assert arbre.evalue() == 42, f"Test échoué: {arbre.evalue()}" # Vérifie que 6 * (4 + 3) = 42 +# +# # Test: Expression avec division +# exp = Expression('/', Expression(10, None, None), Expression(2, None, None)) +# assert exp.evalue() == 5, f"Test échoué: {exp.evalue()}" # Vérifie que 10 / 2 = 5