|
|
|
@ -8,21 +8,25 @@ class Expression: |
|
|
|
self.gauche = gauche |
|
|
|
self.droit = droit |
|
|
|
|
|
|
|
def est_nombre(self): |
|
|
|
return self.gauche is None and self.droit is None |
|
|
|
|
|
|
|
def evalue(self): |
|
|
|
"renvoie la valeur de l'expression" |
|
|
|
if self.gauche == None and self.droit == None: |
|
|
|
return self.racine |
|
|
|
if self.racine == '*': |
|
|
|
|
|
|
|
if self.est_nombre(): |
|
|
|
return float(self.racine) |
|
|
|
|
|
|
|
elif self.racine == '*': |
|
|
|
return self.gauche.evalue() * self.droit.evalue() |
|
|
|
if self.racine == '+': |
|
|
|
elif self.racine == '+': |
|
|
|
return self.gauche.evalue() + self.droit.evalue() |
|
|
|
if self.racine == '-': |
|
|
|
elif self.racine == '-': |
|
|
|
return self.gauche.evalue() - self.droit.evalue() |
|
|
|
if self.racine == '/': |
|
|
|
elif self.racine == '/': |
|
|
|
return self.gauche.evalue() / self.droit.evalue() |
|
|
|
|
|
|
|
def racine_carre(self): |
|
|
|
return math.sqrt(self.racine) |
|
|
|
else: |
|
|
|
raise ValueError("symbole inconnue") |
|
|
|
|
|
|
|
def __str__(self): |
|
|
|
"affiche l'expression" |
|
|
|
@ -47,7 +51,7 @@ def npi2tree(lst): |
|
|
|
p.empiler(exp) |
|
|
|
else : |
|
|
|
if elem != None: |
|
|
|
p.empiler(Expression(int(elem), None, None)) |
|
|
|
p.empiler(Expression(elem, None, None)) |
|
|
|
return p.sommet() |
|
|
|
|
|
|
|
|
|
|
|
@ -60,4 +64,5 @@ if __name__ == "__main__": |
|
|
|
print(exp.evalue()) |
|
|
|
print(exp) |
|
|
|
e = npi2tree([-6, 4, 3, "+", "-"]) |
|
|
|
print(e) |
|
|
|
print(e.evalue()) |