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