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