3 changed files with 4 additions and 88 deletions
@ -1,82 +0,0 @@ |
|||
from File import File_chaine as File |
|||
from Pile import Pile_chaine as Pile |
|||
|
|||
|
|||
class Expression: |
|||
"""Classe représentant une expression arithmétique""" |
|||
def __init__(self, valeur, gauche=None, droite=None): |
|||
self.valeur = valeur |
|||
self.gauche = gauche |
|||
self.droite = droite |
|||
|
|||
def evalue(self): |
|||
"""Méthode permettant d'évaluer l'expression""" |
|||
|
|||
if type(self.valeur) == int: |
|||
return self.valeur |
|||
|
|||
if self.valeur == '+': |
|||
return self.gauche.evalue() + self.droite.evalue() |
|||
elif self.valeur == '*': |
|||
return self.gauche.evalue() * self.droite.evalue() |
|||
elif self.valeur == '/': |
|||
if self.droite.valeur == 0: |
|||
raise ValueError ("division par 0 impossible !! ") |
|||
return self.gauche.evalue() / self.droite.evalue() |
|||
elif self.valeur == '-': |
|||
return self.gauche.evalue() - self.droite.evalue() |
|||
|
|||
|
|||
def __str__(self): |
|||
"""Méthode permettant d'afficher l'expression""" |
|||
if type(self.valeur) == int: |
|||
return str(self.valeur) |
|||
if self.valeur == '+': |
|||
return "("+ str (self.gauche) + "+" + str (self.droite) + ")" |
|||
if self.valeur == '*': |
|||
return "("+ str (self.gauche) + "*" + str (self.droite) + ")" |
|||
if self.valeur == '/': |
|||
return "("+ str (self.gauche) + "/" + str (self.droite) + ")" |
|||
if self.valeur == '-': |
|||
return "("+ str (self.gauche) + "-" + str (self.droite) + ")" |
|||
|
|||
def __repr__(self): |
|||
<<<<<<< HEAD |
|||
"""Méthode permettant d'afficher l'expression""" |
|||
======= |
|||
>>>>>>> 0fcf23e11827bd5ed1bb0b8128905b142750c2f0 |
|||
return str(self) |
|||
|
|||
|
|||
if __name__ =="__main__": |
|||
e = Expression('*',Expression(6, None, None),Expression('+',Expression(4, None, None),Expression(3, None, None))) |
|||
|
|||
def npi2tree(lst): |
|||
"""fonction npi2tree prenant en paramètre une liste correspondant l’expression en notation |
|||
polonaise inversée et renvoyant l’arbre (de type Expression) correspondant""" |
|||
exp = [] |
|||
for ele in lst : |
|||
if ele in ["+","-","/","*"]: |
|||
ex = Expression(ele, exp.pop(), exp.pop()) |
|||
exp.append(ex) |
|||
else: |
|||
exp.append(int(ele)) |
|||
return exp.pop() |
|||
|
|||
<<<<<<< HEAD |
|||
class Calculette: |
|||
"""Classe représentant une calculette""" |
|||
def __init__(self): |
|||
pass |
|||
|
|||
def calculer(self, expression): |
|||
"""Méthode permettant de calculer une expression""" |
|||
try: |
|||
return eval(expression) |
|||
except Exception as e: |
|||
return str(e) |
|||
|
|||
======= |
|||
>>>>>>> 0fcf23e11827bd5ed1bb0b8128905b142750c2f0 |
|||
if __name__ == "__main__": |
|||
npi2tree(["3","4","+","6","*"]) |
Loading…
Reference in new issue