Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Licence CC BY-NC-ND Thierry Parmentelat & Arnaud Legout Inria - UCA
# ceci permet de recharger les modules
# lorsqu'ils ont été modifiés en dehors du notebook

# pour commodité lors du développement des exercices

%load_ext autoreload
%autoreload 2

Évaluateur d’expression postfix

Une fonction postfix_eval prend en entrée une chaîne qui décrit une opération à faire sur des entiers, en utilisant la notation polonaise postfixée, où on écrit par exemple 10 20 + pour ajouter 10 et 20 ; cette notation est aussi appelée la notation polonaise inverse.

Les opérandes sont tous des entiers ; on demande de supporter les 4 opérations + - * et / (division entière), la calculatrice ne manipule donc que des entiers.

Lorsque la chaine est mal formée, vous devez renvoyer une des trois chaines suivantes :

# charger l'exercice et afficher un exemple
from corrections.exo_postfix_eval import exo_postfix_eval
exo_postfix_eval.example()
Loading...
def postfix_eval(chaine):
    ...
exo_postfix_eval.correction(postfix_eval)
Loading...

Évaluateur d’expression postfix typé

Une variante un peu plus difficile

Écrire une variante de postfix_eval qui accepte en deuxième argument un type de nombre parmi int, float, ou Fraction, de sorte que la calculette utilise ce type pour faire ses calculs.

indice : attention au cas de la division, qui doit se comporter selon le type comme une division entière (comme dans postfix_eval), ou comme une division usuelle si le type le permet.

from fractions import Fraction
# charger l'exercice et afficher un exemple

from corrections.exo_postfix_eval import exo_postfix_eval_typed
exo_postfix_eval_typed.example()
Loading...
# votre code
def postfix_eval_typed(chaine, result_type):
    ...
exo_postfix_eval_typed.correction(postfix_eval_typed)
Loading...