Expressions arithmétiques - solutions
Retour à l’exercice
Question 1
def affiche(expression):
if est_feuille(expression):
print(etiquette(expression), end ='')
else:
print('(', end ='')
affiche(gauche(expression))
print(etiquette(expression), end ='')
affiche(droit(expression))
print(')', end ='')
Question 2
def evalue(expression, valeurs):
if est_vide(expression):
return 0
if est_feuille(expression):
v = etiquette(expression)
if v in valeurs:
return valeurs[v]
return v
a=evalue(gauche(expression), valeurs)
b=evalue(droit(expression), valeurs)
o=etiquette(expression)
if o=='+':
return a+b
if o=='*':
return a*b
if o=='-':
return a-b
if o=='/':
return a/b
Question 3
def affichePolonaise(expression):
if est_feuille(expression):
print(etiquette(expression), end =' ')
else:
affichePolonaise(gauche(expression))
affichePolonaise(droit(expression))
print(etiquette(expression), end =' ')