From 8e49e267bafb03b1070cb906faf4a77be8c61641 Mon Sep 17 00:00:00 2001 From: Zver Date: Mon, 15 Dec 2025 14:45:04 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=2019=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson.19.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lesson.19.py diff --git a/lesson.19.py b/lesson.19.py new file mode 100644 index 0000000..2e4b592 --- /dev/null +++ b/lesson.19.py @@ -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]) \ No newline at end of file