|
@ -1,13 +1,17 @@ |
|
|
import tkinter as tk |
|
|
import tkinter as tk |
|
|
from Pile import Pile_chaine |
|
|
from Pile import Pile_chaine |
|
|
|
|
|
import random |
|
|
|
|
|
|
|
|
class Expression: |
|
|
class Expression: |
|
|
|
|
|
"""Implémentation d'une expression mathématique dans un arbre binaire""" |
|
|
def __init__(self, valeur, gauche, droit): |
|
|
def __init__(self, valeur, gauche, droit): |
|
|
|
|
|
"""Crée un arbre binaire vide""" |
|
|
self.valeur = valeur |
|
|
self.valeur = valeur |
|
|
self.gauche = gauche |
|
|
self.gauche = gauche |
|
|
self.droit = droit |
|
|
self.droit = droit |
|
|
|
|
|
|
|
|
def evalue(self): |
|
|
def evalue(self): |
|
|
|
|
|
"""Calcule l'expression mathématique d'un arbre binaire""" |
|
|
if self.valeur == '+': |
|
|
if self.valeur == '+': |
|
|
self.valeur = self.gauche.evalue() + self.droit.evalue() |
|
|
self.valeur = self.gauche.evalue() + self.droit.evalue() |
|
|
if self.valeur == '*': |
|
|
if self.valeur == '*': |
|
@ -15,6 +19,7 @@ class Expression: |
|
|
return self.valeur |
|
|
return self.valeur |
|
|
|
|
|
|
|
|
def __str__(self): |
|
|
def __str__(self): |
|
|
|
|
|
"""Affiche l'expression mathématique d'un arbre binaire""" |
|
|
if self.gauche is None and self.droit is None: |
|
|
if self.gauche is None and self.droit is None: |
|
|
return str(self.valeur) |
|
|
return str(self.valeur) |
|
|
expr = "" |
|
|
expr = "" |
|
@ -33,6 +38,7 @@ class Expression: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def npi2tree(ch): |
|
|
def npi2tree(ch): |
|
|
|
|
|
"""Convertit une expression en notation polonaise inversée à un arbre binaire""" |
|
|
ch = ch.split() |
|
|
ch = ch.split() |
|
|
Expr = Pile_chaine() |
|
|
Expr = Pile_chaine() |
|
|
for elmt in ch: |
|
|
for elmt in ch: |
|
@ -44,12 +50,25 @@ def npi2tree(ch): |
|
|
return Expr.sommet() |
|
|
return Expr.sommet() |
|
|
|
|
|
|
|
|
def calculer(): |
|
|
def calculer(): |
|
|
|
|
|
"""Affiche l'expression ainsi que son résultat dans l'interface Tkinter""" |
|
|
|
|
|
déception = ["Peut mieux faire.", |
|
|
|
|
|
"Va t'entraîner, t'es nul...", |
|
|
|
|
|
"Ah nan, tu pues vraiment.", |
|
|
|
|
|
"Skill issue.", |
|
|
|
|
|
"Je souhaite que tu arrêtes tout.", |
|
|
|
|
|
"Il a eu 0/20", |
|
|
|
|
|
"Apprends à lire.", |
|
|
|
|
|
"Arrête de déconner.", |
|
|
|
|
|
"Abandonne au pire.", |
|
|
|
|
|
"42", |
|
|
|
|
|
"Va faire un tour dehors." |
|
|
|
|
|
] |
|
|
expression = entry.get() |
|
|
expression = entry.get() |
|
|
try: |
|
|
try: |
|
|
resultat = npi2tree(expression).evalue() |
|
|
resultat = npi2tree(expression).evalue() |
|
|
result_label.config(text="Résultat: " + str(resultat)) |
|
|
result_label.config(text="Résultat: " + str(npi2tree(expression)) + " = " + str(resultat)) |
|
|
except Exception as erreur: |
|
|
except: |
|
|
result_label.config(text="Erreur: " + str(erreur)) |
|
|
result_label.config(text=random.choice(déception)) |
|
|
|
|
|
|
|
|
root = tk.Tk() |
|
|
root = tk.Tk() |
|
|
root.title("Calculatrice rudimentaire") |
|
|
root.title("Calculatrice rudimentaire") |
|
|