NSI (terminale) · Chapitre 1 · Application directe du cours
Problème — Évaluation d'une expression en notation postfixée
Structures de données linéaires · niveau 2
Énoncé
Problème — Évaluation d'une expression en notation postfixée.
La notation postfixée (ou polonaise inverse) écrit les opérateurs après leurs opérandes : par exemple "3 4 + 5 *" signifie . Écrire une fonction evaluer_postfixe(expr) qui évalue une telle expression à l'aide d'une pile.
Corrigé
On parcourt les jetons (tokens). Un nombre est empilé ; un opérateur dépile ses deux opérandes, calcule, et empile le résultat. À la fin, la pile contient l'unique valeur du résultat.
def evaluer_postfixe(expr):
pile = []
for jeton in expr.split(): # decoupe selon les espaces
if jeton in ("+", "-", "*", "/"):
droite = pile.pop() # second operande
gauche = pile.pop() # premier operande
if jeton == "+":
pile.append(gauche + droite)
elif jeton == "-":
pile.append(gauche - droite)
elif jeton == "*":
pile.append(gauche * droite)
else:
pile.append(gauche / droite)
else:
pile.append(float(jeton)) # un nombre : on empile
return pile.pop() # resultat final
# Tests
print(evaluer_postfixe("3 4 + 5 *")) # 35.0
print(evaluer_postfixe("10 2 / 3 -")) # 2.0
La pile mémorise les résultats intermédiaires, exactement comme la pile d'exécution d'un calcul. L'expression étant parcourue une fois et chaque opération de pile coûtant , le coût total est , où est le nombre de jetons.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 8 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.