from Pile import Pile_chaine from tkinter import * class Expression: def __init__(self, valeur, gauche, droit): self.valeur = valeur self.gauche = gauche self.droit = droit def evalue(self): dfs_post(self) print(self.valeur) def __str__(self): expstr = dfs_in(self, "") return expstr def dfs_post(a): if a == None: return dfs_post(a.gauche) dfs_post(a.droit) if a.valeur == "+": a.valeur = a.gauche.valeur + a.droit.valeur if a.valeur == "*": a.valeur = a.gauche.valeur * a.droit.valeur def dfs_in(a, expstr): if a == None: return expstr if a.gauche is not None or a.droit is not None: expstr += "(" expstr = dfs_in(a.gauche, expstr) expstr += str(a.valeur) expstr = dfs_in(a.droit, expstr) if a.gauche is not None or a.droit is not None: expstr += ")" return expstr def npi2tree(exptext): exptext = exptext.split() expression = Pile_chaine() for element in exptext: if element in ("+", "*"): droit = expression.depiler() gauche = expression.depiler() expression.empiler(Expression(element, gauche, droit)) else: expression.empiler(Expression(int(element), None, None)) return expression.sommet() def insert(text): pass window = Tk() window.title("Stockfish mais pour les maths") window.geometry(f"300x400+50+50") canvas = Canvas(window, width = 300, height = 400, bg = "#abcdef") canvas.pack() lcdscreen = Entry(window, width = 35) lcdscreen.place(x=5, y=5) touches = "0 1 2 3 4 5 6 7 8 9 + * - / ^".split() for touche in touches: button = Button(window, text = touche, command = lambda touche=touche: insert(touche), bg = "#fedcba") button.place(x=touches.index(touche) // 3 * 50 + 10, y = touches.index(touche) % 3 * 50 + 100) exp = "6 4 3 + *" exp = npi2tree(exp) print(exp) exp.evalue()