import re
# (5.12-2.74+0.24)*(3.15-2.0) + 1.12*4.09 를 postfix로 구현
lis = []
expression = "(5.12-2.74+0.24)*(3.15-2.0) + 1.12*4.09"
expression = re.sub('([\+\-\*\/\(\)])' , ' \g<1> ' , expression)
calc = expression.split()
for k in calc:
if k == '(':
lis.append(k)
elif k == '+' or k == '-':
if '*'in lis or '/' in lis or '+' in lis or '-' in lis:
temp = lis.pop()
if temp == '(' :
lis.append(temp)
lis.append(k)
else:
lis.append(temp)
print(lis.pop(), end=" ")
lis.append(k)
else:
lis.append(k)
elif k == '*' or k == '/':
if '*'in lis or '/' in lis:
print(lis.pop(), end=" ")
lis.append(k)
else:
lis.append(k)
elif k == ')':
while lis:
t=lis.pop()
if t == '(':
continue
else:
print(t, end=" ")
else:
print(k, end=" ")
while lis:
print(lis.pop(), end=" ")
print("\n")
#(5*(3+4)-5.12/2.33)-1.23*100)를 postfix로 구현
lis = []
expression = "(5*(3+4)-5.12/2.33)-1.23*100)"
expression = re.sub('([\+\-\*\/\(\)])' , ' \g<1> ' , expression)
calc = expression.split()
for k in calc:
if k == '(':
lis.append(k)
elif k == '+' or k == '-':
if '*'in lis or '/' in lis or '+' in lis or '-' in lis:
temp = lis.pop()
if temp == '(' :
lis.append(temp)
lis.append(k)
else:
lis.append(temp)
print(lis.pop(), end=" ")
lis.append(k)
else:
lis.append(k)
elif k == '*' or k == '/':
if '*'in lis or '/' in lis:
print(lis.pop(), end=" ")
lis.append(k)
else:
lis.append(k)
elif k == ')':
while lis:
t=lis.pop()
if t == '(':
continue
else:
print(t, end=" ")
else:
print(k, end=" ")
while lis:
print(lis.pop(), end=" ")
print("\n")
#postfix계산기 구현
lis = []
expression = input("계산식을 입력하시오 : ")
expression = re.sub('([\+\-\*\/\(\)])' , ' \g<1> ' , expression)
calc = expression.split()
for k in calc:
if k == '(':
lis.append(k)
elif k == '+' or k == '-':
if '*'in lis or '/' in lis or '+' in lis or '-' in lis:
temp = lis.pop()
if temp == '(' :
lis.append(temp)
lis.append(k)
else:
lis.append(temp)
print(lis.pop(), end=" ")
lis.append(k)
else:
lis.append(k)
elif k == '*' or k == '/':
if '*'in lis or '/' in lis:
print(lis.pop(), end=" ")
lis.append(k)
else:
lis.append(k)
elif k == ')':
while lis:
t=lis.pop()
if t == '(':
continue
else:
print(t, end=" ")
else:
print(k, end=" ")
while lis:
print(lis.pop(), end=" ")