15 0 13 KB
#INFIX TO POSTFIX Stack=[] Exp=[] order={'(':1,')':1,'**':4,'//':3,'%':3,'/':3,'*':3,'+':2,'-':2} def send(item,end=False): if not end: if item.isalpha(): Stack.append(item) else: if (not Exp) and item!='(': Exp.append(item) elif item==')': Exp.reverse() i=0 while iorder[item]: Stack.append(Exp[-1]) del Exp[-1] Exp.append(item) else: Exp.append(item) else: Stack.append(item) Exp.reverse() for i in Exp: Stack.append(i) def printer(S):
#S is Stack print ''.join(S) def main(): global Stack global Exp while True: a=raw_input('ENTER CHARACTER BASED INFIX EXPRESSION \n') a=list(a) #CONVERT TO LIST for i in range(len(a)): if i==len(a)-1: send(a[i],True) else: send(a[i]) print 'FINAL EXPRESSION :' printer(Stack) Exp=[] Stack=[] q=raw_input('PRESS Q TO QUIT') if q.upper()=='Q': break if __name__=='__main__': main()