mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-08 03:00:37 +00:00
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
def evaluer_npi(expression):
|
|
"""fais la notation polonaise inversée (NPI) d'une expression arithmétique
|
|
Args:
|
|
expression (_type_): String contenant l'expression arithmétique
|
|
|
|
Returns:
|
|
_type_: Integer contenant le resultat.
|
|
"""
|
|
|
|
pile = []
|
|
|
|
|
|
elements = expression.split()
|
|
|
|
for element in elements:
|
|
if element.isdigit():
|
|
pile.append(int(element))
|
|
else:
|
|
|
|
droite = pile.pop()
|
|
gauche = pile.pop()
|
|
|
|
if element == '+':
|
|
resultat = gauche + droite
|
|
elif element == '-':
|
|
resultat = gauche - droite
|
|
elif element == '*':
|
|
resultat = gauche * droite
|
|
elif element == '/':
|
|
resultat = gauche / droite
|
|
else:
|
|
raise ValueError(f"Opérateur inconnu: {element}")
|
|
|
|
|
|
pile.append(resultat)
|
|
|
|
|
|
if len(pile) != 1:
|
|
raise ValueError("L'expression est mal formée.")
|
|
|
|
return pile.pop()
|
|
|
|
|
|
expression = "100 60 / 60 + 90 *"
|
|
resultat = evaluer_npi(expression)
|
|
print(f"Le résultat de l'expression '{expression}' est: {resultat}")
|