Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
optype = {'^':3,'/':2,'*':2,'-':1,'+':1}
st = [] # stack
for i in "8 2 5*+ 1 3 2 * + 4 - /":
if (i==' '): continue
if (i in string.digits): st.append(i)
else:
ip = optype[i]
i1 = st.pop()
i2 = st.pop()
i1p = 0 if i1 in string.digits else optype[i1] if i1 in optype.items() else 1
i2p = 0 if i2 in string.digits else optype[i2] if i2 in optype.items() else 1
if (i1p<ip and i1p!=0): i1 ='('+i1+')'
if (i2p<ip and i2p!=0): i2 ='('+i2+')'
st.append(i2+i+i1)
# сравним
print("(8+2*5)/(1+3*2-4)")
pr(st.pop())
Из постфиксной в инфиксную нотацию