fork download
  1. # your code goes here
  2. from math import*
  3. fn={'/':lambda x: (x.pop)/(x.pop), '*':lambda x: (x.pop)*(x.pop), '+':lambda x: (x.pop)+(x.pop)}
  4. class Ser(object):
  5. def __init__(self):
  6. self.stack=[]
  7. self.fn=fn
  8. def pop(self):
  9. return self.stack.pop()
  10. def push(self,val):
  11. self.stack+=[val]
  12. def eval(self,code):
  13. i=0
  14. self.code=code
  15. while i<len(code):
  16. oldstack=self.stack[:]
  17. try:
  18. c=code[i]
  19. if c=='"':
  20. s = ""
  21. i+=1
  22. while i<len(code) and code[i]!='"':
  23. s+=code[i]
  24. i+=1
  25. self.push(s)
  26. elif c==" ":
  27. pass
  28. elif c.isdigit():
  29. if code.find(c)<0 or code[code.find(c)-1].isdigit():
  30. s=c
  31. i+=1
  32. while i<len(code) and code[i].isdigit():
  33. s+=code[i]
  34. i+=1
  35. self.push(s)
  36. else:
  37. self.fn.get(c,lambda x:x)(self)
  38. except SystemExit:
  39. exit()
  40. except:
  41. self.stack=oldstack[:]
  42. finally:
  43. i+=1
  44. print self.stack
  45. while len(self.stack)>0:
  46. print self.pop()
  47.  
  48.  
  49. def ex(code):
  50. Stacky=Ser()
  51. Stacky.eval(code)
  52. ex(raw_input())
Success #stdin #stdout 0.02s 9024KB
stdin
5 4*
stdout
[]