project_python.3.1/lesson.19.py

45 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

''' ****** Задание 19 из 20 *********
* В ОПН нет скобок и приоритета операций — всё вычисляется строго слева направо, с помощью стека.
Вы добавляете числа в стек, а когда встречаете оператор (+, -, *) — извлекаете два последних числа, применяете операцию и возвращаете результат обратно в стек.
Напишите программу, которая по введённому выражению в ОПН вычисляет результат.
Формат ввода
Вводится одна строка, содержащая разделённые пробелами целые числа и знаки операций +, -, *, которые вместе составляют корректное выражение в обратной польской нотации.
Формат вывода
Выводится одно целое число — результат вычисления выражения.
Подсказка
Рассмотрим первый пример:
7 2 3 * - читается так:
7 помещается в стек
2 помещается в стек
3 помещается в стек
2 и 3 извлекаются из стека и над ними производится операция умножения, а результат 6 помещается в стек
7 и 6 извлекаются из стека и над ними производится операция вычитания, а результат 1 помещается в стек
В конце выполнения в стеке остаётся ровно одно число — это и есть результат.
Пример 1
Ввод
7 2 3 * -
Вывод
1
'''
if __name__ == "__main__":
data = list(input().split())
result = [int(data[0])]
for i in data[1:]:
if i.isdigit():
result.append(int(i))
else:
a = result.pop()
exec("result[-1] " + i + "= a")
print(result[0])