diff --git a/calculette.py b/calculette.py index dc9034a..49c3d91 100644 --- a/calculette.py +++ b/calculette.py @@ -15,11 +15,13 @@ class Expression: if self.valeur == '+': return self.gauche.evalue() + self.droite.evalue() - if self.valeur == '*': + elif self.valeur == '*': return self.gauche.evalue() * self.droite.evalue() - if self.valeur == '/': + elif self.valeur == '/': + if self.droite.valeur == 0: + raise ValueError ("division par 0 impossible !! ") return self.gauche.evalue() / self.droite.evalue() - if self.valeur == '-': + elif self.valeur == '-': return self.gauche.evalue() - self.droite.evalue() @@ -34,31 +36,25 @@ class Expression: return "("+ str (self.gauche) + "/" + str (self.droite) + ")" if self.valeur == '-': return "("+ str (self.gauche) + "-" + str (self.droite) + ")" + + def __repr__(self): + return str(self) if __name__ =="__main__": - e = Expression('*', - Expression(6, None, None), - Expression('+', - Expression(4, None, None), - Expression(3, None, None) - ) - ) - - - - -class Conversion: - def npi2tree (lst): - """fonction npi2tree prenant en paramètre une liste correspondant l’expression en notation - polonaise inversée et renvoyant l’arbre (de type Expression) correspondant""" - p = Pile(Expression) - lst = [] - for ele in lst : - if ele == '+' or ele == '*': - exp = Expression(ele, Expression()) - p.empiler(exp) - else: - p.empiler ... - return exp - \ No newline at end of file + e = Expression('*',Expression(6, None, None),Expression('+',Expression(4, None, None),Expression(3, None, None))) + +def npi2tree(lst): + """fonction npi2tree prenant en paramètre une liste correspondant l’expression en notation + polonaise inversée et renvoyant l’arbre (de type Expression) correspondant""" + exp = [] + for ele in lst : + if ele in ["+","-","/","*"]: + ex = Expression(ele, exp.pop(), exp.pop()) + exp.append(ex) + else: + exp.append(int(ele)) + return exp.pop() + +if __name__ == "__main__": + npi2tree(["3","4","+","6","*"]) diff --git a/intergraph.py b/intergraph.py index 6293be9..16428d3 100644 --- a/intergraph.py +++ b/intergraph.py @@ -1,39 +1,48 @@ from tkinter import * -fenetre = Tk() -label = Label(fenetre, text="Calculatrice") -label.grid(row=0, column=0) -# Creating the buttons +fenetre = Tk() + bouton1 = Button(fenetre, text="1") -bouton1.grid(row=1, column=0) +bouton1.grid(row=2, column=0) bouton2 = Button(fenetre, text="2") -bouton2.grid(row=1, column=1) +bouton2.grid(row=2, column=1) bouton3 = Button(fenetre, text="3") -bouton3.grid(row=1, column=2) +bouton3.grid(row=2, column=2) bouton4 = Button(fenetre, text="4") -bouton4.grid(row=2, column=0) +bouton4.grid(row=1, column=0) bouton5 = Button(fenetre, text="5") -bouton5.grid(row=2, column=1) +bouton5.grid(row=1, column=1) bouton6 = Button(fenetre, text="6") -bouton6.grid(row=2, column=2) +bouton6.grid(row=1, column=2) bouton7 = Button(fenetre, text="7") -bouton7.grid(row=3, column=0) +bouton7.grid(row=0, column=0) bouton8 = Button(fenetre, text="8") -bouton8.grid(row=3, column=1) +bouton8.grid(row=0, column=1) bouton9 = Button(fenetre, text="9") -bouton9.grid(row=3, column=2) +bouton9.grid(row=0, column=2) bouton0 = Button(fenetre, text="0") -bouton0.grid(row=4, column=1) +bouton0.grid(row=3, column=1) + +boutonadd = Button(fenetre, text="+") +boutonadd.grid(row=0, column=3) + +boutonmultiplie = Button(fenetre, text="*") +boutonmultiplie.grid(row=2, column=3) + +boutonminus = Button(fenetre, text="-") +boutonminus.grid(row=1, column=3) +boutondivide = Button(fenetre, text="/") +boutondivide.grid(row=3, column=3) fenetre.mainloop() \ No newline at end of file