Сделал 19 задание
This commit is contained in:
parent
c23fc31ce4
commit
8e49e267ba
45
lesson.19.py
Normal file
45
lesson.19.py
Normal 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])
|
||||||
Loading…
Reference in a new issue