Сделал 19 задание

This commit is contained in:
parent c23fc31ce4
commit 8e49e267ba

45
lesson.19.py Normal file
View file

@ -0,0 +1,45 @@
''' ****** Задание 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])