From b48d3e08858ece784b615eb228dc2b3522b86eca Mon Sep 17 00:00:00 2001 From: GUILLAUME Baptiste Date: Fri, 16 Feb 2024 11:17:03 +0100 Subject: [PATCH] =?UTF-8?q?projet=20termin=C3=A9=20:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculatrice.py | 56 +++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/calculatrice.py b/calculatrice.py index 7086863..4fe8857 100644 --- a/calculatrice.py +++ b/calculatrice.py @@ -19,6 +19,10 @@ class Expression: return self.gauche.evalue() - self.droite.evalue() elif self.valeur == '/': return self.gauche.evalue() / self.droite.evalue() + elif self.valeur == '//': + return self.gauche.evalue() // self.droite.evalue() + elif self.valeur == '%': + return self.gauche.evalue() % self.droite.evalue() elif self.valeur == '^': return self.gauche.evalue() ** self.droite.evalue() elif self.valeur == 'sqrt': @@ -33,28 +37,22 @@ class Expression: return self.valeur def __str__(self): - if self.valeur != '+' and self.valeur != '*' and self.valeur != '-' and self.valeur != '/' and self.valeur != '^' and self.valeur != 'sqrt' and self.valeur != 'cos' and self.valeur != 'sin' and self.valeur != 'tan': + if self.valeur != '+' and self.valeur != '*' and self.valeur != '-' and self.valeur != '/' and self.valeur != '//' and self.valeur != '%' and self.valeur != '^' and self.valeur != 'sqrt' and self.valeur != 'cos' and self.valeur != 'sin' and self.valeur != 'tan': return self.valeur - elif self.valeur == '+' or self.valeur == '*' or self.valeur == '-' or self.valeur == '/' or self.valeur == '^': + elif self.valeur == '+' or self.valeur == '*' or self.valeur == '-' or self.valeur == '/' or self.valeur == '//' or self.valeur =='%' or self.valeur == '^': return "(" + str(self.gauche.__str__()) + str(self.valeur) + str(self.droite.__str__()) + ")" - elif self.valeur == 'sqrt': - return "(sqrt(" + str(self.gauche.__str__()) + ')' + ')' - elif self.valeur == 'cos': - return "(cos(" + str(self.gauche.__str__()) + ')' + ')' - elif self.valeur =='sin': - return "(sin(" + str(self.gauche.__str__()) + ')' + ')' - elif self.valeur == 'tan': - return "(tan(" + str(self.gauche.__str__()) + ')' + ')' + elif self.valeur =='sqrt' or self.valeur == 'cos' or self.valeur == 'sin' or self.valeur == 'tan': + return str(self.valeur) + "(" + str(self.gauche.__str__()) + ")" def npi2tree(exp): """Prends en paramètre une ... correspondant à l'expression en notation polonaise inversée et renvoie l'arbre correspondant""" pile_npi = Pile_lst() lst_npi = exp.split() for element in lst_npi: - if element == '+' or element == '*' or element == '-' or element == '/' or element == '^': + if element == '+' or element == '*' or element == '-' or element == '/' or element == '//' or element == '%' or element == '^': exp_npi = Expression(element, pile_npi.depiler(), pile_npi.depiler()) pile_npi.empiler(exp_npi) - elif element == 'sqrt' and element == 'cos' and element == 'sin' and element == 'tan': + elif element == 'sqrt' or element == 'cos' or element == 'sin' or element == 'tan': exp_npi = Expression(element, pile_npi.depiler(), None) pile_npi.empiler(exp_npi) else: @@ -82,25 +80,23 @@ def resultat(): def legende(): fenetre = Tk() fenetre.title('Légende') - texteLeg1 = Label(fenetre, text='Pour faire une addition, taper : + ') - texteLeg1.pack() - texteLeg2 = Label(fenetre, text='Pour faire une soustraction, taper : - ') - texteLeg2.pack() - texteLeg3 = Label(fenetre, text='Pour faire une multiplication, taper : * ') - texteLeg3.pack() - texteLeg4 = Label(fenetre, text='Pour faire une division, taper : / ') - texteLeg4.pack() - texteLeg5 = Label(fenetre, text='Pour faire une faire une puissance de ..., taper : ^ ') - texteLeg5.pack() - texteLeg6 = Label(fenetre, text='Pour faire une racine carré, taper: sqrt') - texteLeg6.pack() - texteLeg7 = Label(fenetre, text='Pour faire le cosinus de..., taper: cos') - texteLeg7.pack() - texteLeg8 = Label(fenetre, text='Pour faire le sinus de..., taper: cos') - texteLeg8.pack() - texteLeg9 = Label(fenetre, text='Pour faire la tangente de..., taper: tan') - texteLeg9.pack() + cadre1 = LabelFrame(fenetre, text="Opérateur à 2 chiffres", padx=20, pady=20) + cadre1.pack(fill="both", expand="yes") + cadre2 = LabelFrame(fenetre, text="Opérateur à 1 chiffres", padx=20, pady=20) + cadre2.pack(fill="both", expand="yes") + + texteLeg1 = Label(cadre1, text="Pour faire une addition, taper : << + >>").pack() + texteLeg2 = Label(cadre1, text="Pour faire une soustraction, taper : << - >>").pack() + texteLeg3 = Label(cadre1, text="Pour faire une multiplication, taper : << * >>").pack() + texteLeg4 = Label(cadre1, text="Pour faire une division, taper : << / >>").pack() + texteLeg5 = Label(cadre1, text="Pour faire une division entière, taper : << // >>").pack() + texteLeg6 = Label(cadre1, text="Pour calculer le modulo, taper : << % >>").pack() + texteLeg7 = Label(cadre1, text="Pour calculer 'a' puissance 'b', taper : << ^ >>").pack() + texteLeg8 = Label(cadre2, text="Pour calculer la racine carré d'une valeur, taper: << sqrt >>").pack() + texteLeg9 = Label(cadre2, text="Pour calculer le cosinus d'une valeur, taper: << cos >>").pack() + texteLeg10 = Label(cadre2, text="Pour calculer le sinus d'une valeur, taper: << sin >>").pack() + texteLeg11 = Label(cadre2, text="Pour calculer la tangente d'une valeur, taper: << tan >>").pack()