diff --git a/expression.py b/expression.py index d354d3d..9880d91 100644 --- a/expression.py +++ b/expression.py @@ -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()) \ No newline at end of file