Сделал 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