Browse Source

projet terminé :)

master
GUILLAUME Baptiste 9 months ago
parent
commit
b48d3e0885
  1. 58
      calculatrice.py

58
calculatrice.py

@ -19,6 +19,10 @@ class Expression:
return self.gauche.evalue() - self.droite.evalue() return self.gauche.evalue() - self.droite.evalue()
elif self.valeur == '/': elif self.valeur == '/':
return self.gauche.evalue() / self.droite.evalue() 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 == '^': elif self.valeur == '^':
return self.gauche.evalue() ** self.droite.evalue() return self.gauche.evalue() ** self.droite.evalue()
elif self.valeur == 'sqrt': elif self.valeur == 'sqrt':
@ -33,28 +37,22 @@ class Expression:
return self.valeur return self.valeur
def __str__(self): 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 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__()) + ")" return "(" + str(self.gauche.__str__()) + str(self.valeur) + str(self.droite.__str__()) + ")"
elif self.valeur == 'sqrt': elif self.valeur =='sqrt' or self.valeur == 'cos' or self.valeur == 'sin' or self.valeur == 'tan':
return "(sqrt(" + str(self.gauche.__str__()) + ')' + ')' return str(self.valeur) + "(" + 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__()) + ')' + ')'
def npi2tree(exp): def npi2tree(exp):
"""Prends en paramètre une ... correspondant à l'expression en notation polonaise inversée et renvoie l'arbre correspondant""" """Prends en paramètre une ... correspondant à l'expression en notation polonaise inversée et renvoie l'arbre correspondant"""
pile_npi = Pile_lst() pile_npi = Pile_lst()
lst_npi = exp.split() lst_npi = exp.split()
for element in lst_npi: 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()) exp_npi = Expression(element, pile_npi.depiler(), pile_npi.depiler())
pile_npi.empiler(exp_npi) 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) exp_npi = Expression(element, pile_npi.depiler(), None)
pile_npi.empiler(exp_npi) pile_npi.empiler(exp_npi)
else: else:
@ -82,25 +80,23 @@ def resultat():
def legende(): def legende():
fenetre = Tk() fenetre = Tk()
fenetre.title('Légende') fenetre.title('Légende')
texteLeg1 = Label(fenetre, text='Pour faire une addition, taper : + ') cadre1 = LabelFrame(fenetre, text="Opérateur à 2 chiffres", padx=20, pady=20)
texteLeg1.pack() cadre1.pack(fill="both", expand="yes")
texteLeg2 = Label(fenetre, text='Pour faire une soustraction, taper : - ') cadre2 = LabelFrame(fenetre, text="Opérateur à 1 chiffres", padx=20, pady=20)
texteLeg2.pack() cadre2.pack(fill="both", expand="yes")
texteLeg3 = Label(fenetre, text='Pour faire une multiplication, taper : * ')
texteLeg3.pack() texteLeg1 = Label(cadre1, text="Pour faire une addition, taper : << + >>").pack()
texteLeg4 = Label(fenetre, text='Pour faire une division, taper : / ') texteLeg2 = Label(cadre1, text="Pour faire une soustraction, taper : << - >>").pack()
texteLeg4.pack() texteLeg3 = Label(cadre1, text="Pour faire une multiplication, taper : << * >>").pack()
texteLeg5 = Label(fenetre, text='Pour faire une faire une puissance de ..., taper : ^ ') texteLeg4 = Label(cadre1, text="Pour faire une division, taper : << / >>").pack()
texteLeg5.pack() texteLeg5 = Label(cadre1, text="Pour faire une division entière, taper : << // >>").pack()
texteLeg6 = Label(fenetre, text='Pour faire une racine carré, taper: sqrt') texteLeg6 = Label(cadre1, text="Pour calculer le modulo, taper : << % >>").pack()
texteLeg6.pack() texteLeg7 = Label(cadre1, text="Pour calculer 'a' puissance 'b', taper : << ^ >>").pack()
texteLeg7 = Label(fenetre, text='Pour faire le cosinus de..., taper: cos')
texteLeg7.pack() texteLeg8 = Label(cadre2, text="Pour calculer la racine carré d'une valeur, taper: << sqrt >>").pack()
texteLeg8 = Label(fenetre, text='Pour faire le sinus de..., taper: cos') texteLeg9 = Label(cadre2, text="Pour calculer le cosinus d'une valeur, taper: << cos >>").pack()
texteLeg8.pack() texteLeg10 = Label(cadre2, text="Pour calculer le sinus d'une valeur, taper: << sin >>").pack()
texteLeg9 = Label(fenetre, text='Pour faire la tangente de..., taper: tan') texteLeg11 = Label(cadre2, text="Pour calculer la tangente d'une valeur, taper: << tan >>").pack()
texteLeg9.pack()

Loading…
Cancel
Save