В поле суммы перевода можно ввести выражение, например 1500 - (200 + 50) * 2. Дана строка expr: целые неотрицательные числа, +, -, *, /, скобки и пробелы.
Минус бывает унарным, но только в начале выражения или сразу после (: -5 + 3, 2 * (-4 + 1). Деление целочисленное, дробная часть отбрасывается к нулю: -7 / 2 = -3. Деления на ноль во входе нет.
Приоритет обычный: сначала скобки, потом * и / слева направо, потом + и -. Верните значение выражения. eval и его аналоги не использовать.
В работе: Поле суммы в приложении Т‑Банка: клиент делит счёт в ресторане на месте, не выходя в калькулятор.
Пример 1
expr = "1500 - (200 + 50) * 2"
1000
Скобка 250, умножение 500, итог 1000.
Пример 2
expr = "-7 / 2 + (-(3))"
-6
−7 / 2 = −3 (к нулю), плюс −3. Итог −6.
Ограничения
- 1 ≤ длина
expr≤ 10⁵ - Глубина скобок до 10⁴
- Промежуточные значения по модулю ≤ 10¹⁵
- Лимит — 3 с на тест (3000 мс).
print() и console.log() уходят в консоль.
def eval_amount(expr):
Источник: наша задача на данных Т-Банка. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.