Browse Source

plus que l'interface et la division

master
manon 2 months ago
parent
commit
1d9d3d041d
  1. 51
      oui.py

51
oui.py

@ -4,26 +4,57 @@
class Expression: class Expression:
"""représente une expression arithmétique sous forme d'un arbre""" """représente une expression arithmétique sous forme d'un arbre"""
def __init__ (valeur_racine, fils_gauche, fils_droit): def __init__ (self, valeur_racine, fils_gauche, fils_droit):
self.val_racine = valeur_racine self.val_racine = valeur_racine
self.gauche = fils_gauche self.gauche = fils_gauche
self.droit = fils_droit self.droit = fils_droit
def évalue (self) : #pas fini def evalue (self) :
if fils_gauche == None and fils_droit == None : if self.gauche == None and self.droit == None :
return return self.val_racine
if self.valeur == '+':
if self.gauche != None: #on ne met pas elif car les cas sont indépendants"
gauche_val = self.gauche.evalue()
else:
gauche_val = 0
if self.droit != None:
droite_val = self.droit.evalue()
else:
droite_val = 0
if self.val_racine == '+':
return gauche_val + droite_val return gauche_val + droite_val
elif self.valeur == '-': elif self.val_racine == '-':
return gauche_val - droite_val return gauche_val - droite_val
elif self.valeur == '*': elif self.val_racine == '*':
return gauche_val * droite_val return gauche_val * droite_val
else :
raise ValueError ("Cette commande ne peut pas être effectuer")
def __str__(self): def __str__(self):
result = "" result = ""
if self.droite: if self.droit:
result = result + str(self.droite) result = result + str(self.droit)
result = resutl + str(self.valeur) + "\n" """le "/n" c'est pour avoir une nouvelle ligne de l'arbre""" result = result + str(self.val_racine) + "\n" """le "/n" c'est pour avoir une nouvelle ligne de l'arbre"""
if self.gauche: if self.gauche:
result += str(self.gauche) result += str(self.gauche)
return result return result
#test:
exp = Expression(5,None,None)
assert exp.evalue() == 5
exp = Expression('+', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça
assert exp.evalue() == 11
#exp = Expression('+', 8, 3)#mais ça marche pas comme ça, je sais pas trop comment régler ça
#assert exp.evalue() == 11
exp = Expression('*', Expression(8,None,None), Expression(3,None,None))#ça marche comme ça
assert exp.evalue() == 24
exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça
assert exp.evalue() == 42
Loading…
Cancel
Save