 Écrivez une fonction en Python qui évalue une expression donnée.
def evaluation_expression(expression): \n \n # une pile pour stocker les valeurs entières \n valeurs = [] \n \n # une pile pour stocker les opérateurs. \n ops = [] \ni = 0\n \n while i < len(expression): \n \n # Le jeton actuel est un espace, \n # ignorez-le. \n if expression[i] == ' ': \ni += 1\n continue\n \n # Le jeton actuel est une accolade \n # ouvrante, poussez-le vers 'ops' \n elif expression[i] == '(': \n ops.append(expression[i]) \n \n # Le jeton actuel est un nombre, poussez \n # pour empiler les nombres. \n elif expression[i].isdigit(): \n val = 0\n \n # Il peut y avoir plus d'un \n # chiffre dans le nombre. \n while (i < len(expression) and\n expression[i].isdigit()): \n \n val = (val * 10) + int(expression[i]) \ni += 1\n \n values.append(val) \n \n # Accolade fermante rencontrée, résoudre \n # accolade entière. \n expression elif[ i] == ')' : \n \n tandis que len(ops) != 0 et ops[-1] != '(' : \n \n val2 = valeurs.pop() \n val1 = valeurs.pop () \n op = ops.pop() \n \n values.append(performOp(val1, val2, op)) \n \n # pop accolade ouvrante. \n ops.pop() \n \n # Courant le jeton est un opérateur. \n sinon : \n \n # tandis que le haut de 'ops' a la même priorité ou \n # une priorité supérieure au jeton actuel \n #, qui est un opérateur. \n # applique l'opérateur au-dessus de 'ops ' \n # pour les deux premiers éléments dans les valeurs empiler. \n while (len(ops) != 0 and\n precedence(ops[-1]) >= precedence(expression[i])): \n \n val2 = values.pop() \n val1 = values. pop() \n op = ops.pop() \n \n values.append(performOp(val1, val2, op)) \n \n # Pousser le jeton actuel vers 'ops'. \n ops.append(expression[i]) \n \ni += 1\n \n # L'expression entière a été analysée à ce \n # point, appliquez les opérations restantes aux valeurs restantes \n #. \n tandis que len(ops) != 0 : \n \n val2 = values.pop() \n val1 = values.pop() \n op = ops.pop() \n \n values.append(performOp( val1, val2, op)) \n \n # Le haut des 'valeurs' contient le résultat, retournez-le. \n valeurs de retour[-1]