from math import cos, sin, exp, sqrt from misc.util import isNumber class Expression: def __init__(self, val=None, gauche=None, droite=None): if isNumber(val) and (gauche != None or droite != None): raise AttributeError("gauche et droite ne peuvent pas exister si val est un nombre") self.val = val self.gauche = gauche self.droite = droite def evalue(self): if self.val == "+": return self.gauche.evalue() + self.droite.evalue() elif self.val == "-": return self.gauche.evalue() - self.droite.evalue() elif self.val == "*": return self.gauche.evalue() * self.droite.evalue() elif self.val == "/": return self.gauche.evalue() / self.droite.evalue() elif self.val == "^": return self.gauche.evalue() ** self.droite.evalue() elif self.val == "cos": return cos(self.gauche.evalue()) elif self.val == "sin": return sin(self.gauche.evalue()) elif self.val == "exp": return exp(self.gauche.evalue()) elif self.val == "sqrt": return sqrt(self.gauche.evalue()) else: return float(self.val) def __str__(self): if isNumber(self.val): return str(self.val) return "(" + str(self.gauche.__str__()) + str(self.val) + str(self.droite.__str__()) + ")"