Advertisement
OriHackingTutorials

Calculator Code Python

Aug 24th, 2020 (edited)
2,200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.28 KB | None | 0 0
  1. def searchChar(expr, char):
  2.     parenthesisCounter = 0
  3.     for i in range(len(expr)-1, -1, -1):
  4.         if expr[i] == ")":
  5.             parenthesisCounter += 1
  6.         elif expr[i] == "(":
  7.             parenthesisCounter -= 1
  8.         elif expr[i] == char and parenthesisCounter == 0 and expr[i-1] not in ("*", "/", "-", "+", "^"):
  9.             return i
  10.     return -1
  11.  
  12. def calc(expr):
  13.     try:
  14.         return float(expr)
  15.     except ValueError:
  16.         pass
  17.  
  18.     searchingOrder = ["+", "-", "*", "/", "^"]
  19.     for op in searchingOrder:
  20.         idx = searchChar(expr, op)
  21.         if idx != -1:
  22.             left = expr[:idx]
  23.             right = expr[idx+1:]
  24.             if op == "+":
  25.                 if len(left) == 0:
  26.                     left = "0"
  27.                 return calc(left) + calc(right)
  28.  
  29.             elif op == "-":
  30.                 if len(left) == 0:
  31.                     left = "0"
  32.                 return calc(left) - calc(right)
  33.  
  34.             elif op == "*":
  35.                 return calc(left) * calc(right)
  36.  
  37.             elif op == "/":
  38.                 return calc(left) / calc(right)
  39.  
  40.             elif op == "^":
  41.                 return calc(left) ** calc(right)
  42.     if expr[0] == "(":
  43.         # Strip parenthesis from expr and calc
  44.         return calc(expr[1:-1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement