enora.delmas 3 months ago
parent
commit
0454c34a71
  1. 22
      expression.py

22
expression.py

@ -1,4 +1,5 @@
from Pile import Pile_chaine as Pile
import math
class Expression:
"permet de représenter et manipuler une expression arithmpétique sous forme d'un arbre"
@ -15,11 +16,18 @@ class Expression:
return self.gauche.evalue() * self.droit.evalue()
if self.racine == '+':
return self.gauche.evalue() + self.droit.evalue()
if self.racine == '-':
return self.gauche.evalue() - self.droit.evalue()
if self.racine == '/':
return self.gauche.evalue() / self.droit.evalue()
def racine_carre(self):
return math.sqrt(self.racine)
def __str__(self):
"affiche l'expression"
exp = ""
if self.racine != '*' or self.racine != '+':
if self.racine != '*' or self.racine != '+' or self.racine != '-' or self.racine != '/':
if self.gauche != None:
exp = "(" + exp + str(self.gauche)
exp = exp + str(self.racine)
@ -31,7 +39,7 @@ class Expression:
def npi2tree(lst):
p = Pile()
for elem in lst:
if elem == '+' or elem =='*':
if elem == '+' or elem =='*' or elem == '-' or elem == '/':
racine = elem
fils_d = p.depiler()
fils_g = p.depiler()
@ -45,10 +53,12 @@ def npi2tree(lst):
if __name__ == "__main__":
exp = Expression('*',
Expression('+',
Expression(4, None, None),
Expression('/',
Expression(1.5, None, None),
Expression(3, None, None)),
Expression(6, None, None))
Expression(6.5, None, None))
print(exp.evalue())
print(exp)
print(npi2tree(["6", "4", "3", "+", "*"]))
e = npi2tree(["6", "4", "3", "+", "-"])
print(e.evalue())

Loading…
Cancel
Save