Напишите калькулятор выражений в обратной польской записи. В выражении должны поддерживаться числа, знаки бинарных операций ‘+’, ‘-’, ‘*’, ‘/’. Польская запись записывается в одну строку, причем элементы польской записи разделяются произвольным количеством пробелов. Пробелы обязательны, когда необходимо отделить два числа друг от друга и допускаются для разделения знаков операций друг от друга или знаков операций и чисел, а также в начале и конце строки. Гарантируется, что польская запись является корректной записью некоторого выражения. Пример польской записи:
1 2 3 +*
Числа-операнды записываются в пятеричной симметричной системе счисления (см. например, описание троичной симметричной системы счисления). В качестве отрицательных цифр пятеричной симметричной системы счисления используются цифры B, обозначающая -2, и A, обозначающая -1. Таким образом, число B2 в пятеричной симметричной системе счисления - это число -8 в десятичной системе счисления.
Калькулятор должен обрабатывать 27-разрядные числа с фиксированной точкой, в которых младшие 11 разрядов отводится под дробную часть, а старшие 16 разрядов - под целую часть. Например, число 120.0102 в виде 27-разрядного числа с фиксированной точкой запишется как 000000000000012001020000000.
На вход подаются числа, у которых целая часть отделяется от дробной символом “точка”, причем гарантируется, что в целой части числа находится не более чем 16 значащих разрядов, а в дробной части - не более чем 11 значащих разрядов. У числа с нулевой дробной частью дробная часть может отсутствовать.
Ваша программа должна вычислить выражение и вывести результат в виде 27-разрядного числа в пятеричной симметричной записи. Если при вычислении возникла ошибка, например, результат вычисления операции после округления не может быть представлен с требуемой разрядностью, должна быть выведена строка ЕRROR.
При вычислении результата операций используйте округление к ближайшему представимому значению.
s = input().split()
polskiu = [int(s[0])]
for i in range(len(s) - 2):
polskiu.append(int(s[i + 1]))
x = s[-1][i]
if x == '+':
g = polskiu.pop()
z = polskiu.pop()
polskiu.append(g + z)
elif x == '-':
g = polskiu.pop()
z = polskiu.pop()
polskiu.append(z - g)
elif x == '*':
g = polskiu.pop()
z = polskiu.pop()
polskiu.append(g * z)
print(polskiu[0])
НО, у меня не получается вывести результат в виде 27-разрядного числа в пятеричной симметричной записи и сделать обработку ошибки сказанной выше в условии.