Найти в Дзене

Разбор задачи "Постфиксная запись" с сайта CodeForces на Python

Условие задачи В постфиксной записи (или обратной польской записи) операция записывается после двух операндов. Например, сумма двух чисел A и B записывается как A B +. Запись B C + D * обозначает привычное нам (B + C) * D, а запись A B C + D * + означает A + (B + C) * D. Достоинство постфиксной записи в том, что она не требует скобок и дополнительных соглашений о приоритете операторов для своего чтения. Дано выражение в обратной польской записи. Определите его значение. Алгоритм решения Необходимо грамотно обработать входящую строку. 1. Создаем список, в котором будем хранить числовые значения (по факту в списке всегда будет хранится 1 или 2 числа). 2. Считываем строку и посимвольно проверяем, является ли символ числом. Если да, то добавляем число в массив и пропускаем нижележащие операции. Если мы получили не число, значит в списке уже есть 2 числа, над которыми мы можем провести арифметические действия. 3. Достаем числа из списка функцией pop - она возвращает первое значение и сразу
Оглавление
Условие задачи
Условие задачи

Условие задачи

В постфиксной записи (или обратной польской записи) операция записывается после двух операндов. Например, сумма двух чисел A и B записывается как A B +. Запись B C + D * обозначает привычное нам (B + C) * D, а запись A B C + D * + означает A + (B + C) * D. Достоинство постфиксной записи в том, что она не требует скобок и дополнительных соглашений о приоритете операторов для своего чтения.

Дано выражение в обратной польской записи. Определите его значение.

Алгоритм решения

Необходимо грамотно обработать входящую строку.

1. Создаем список, в котором будем хранить числовые значения (по факту в списке всегда будет хранится 1 или 2 числа).

2. Считываем строку и посимвольно проверяем, является ли символ числом. Если да, то добавляем число в массив и пропускаем нижележащие операции. Если мы получили не число, значит в списке уже есть 2 числа, над которыми мы можем провести арифметические действия.

3. Достаем числа из списка функцией pop - она возвращает первое значение и сразу его удаляет.

4. Производим необходимые арифметические операции и добавляем вычисленное значение в список.

5. Ответом будет являться первое число из списка (после последней операции в списке останется одно число).

Код программы

Скриншот кода программы
Скриншот кода программы

import sys

def solve(vr):

st = []

for w in vr:

if w.isdigit(): # если он число

st.append(int(w))

continue # возвращаемся на проверку условия

y = st.pop() # берем первое число в списке

x = st.pop() # второе число в списке

z = {

'+': lambda x, y: x + y,

'-': lambda x, y: x - y,

'*': lambda x, y: x * y,

'/': lambda x, y: x // y }[w](x, y)

st.append(z)

return st.pop()

vr = input().split()

print(solve(vr))

Мой разбор помог вам?? Буду рада лайку или комментарию!

#информатика #программирование на python #репетитор по информатике #программирование для начинающих #егэ по информатике