mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-09 11:30:38 +00:00
tried to add dijkstra implementation
This commit is contained in:
46
tp6_enirely/tp6/npi.py
Normal file
46
tp6_enirely/tp6/npi.py
Normal file
@@ -0,0 +1,46 @@
|
||||
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}")
|
||||
Reference in New Issue
Block a user