227. Basic Calculator II

Given a string s which represents an expression, evaluate this expression and return its value. s consists of integers and operators ('+', '-', '*', '/') separated by some number of spaces.

def calculate(self, s: str) -> int: 
    num = 0 
    res = 0 
    last = 0 
    op = '+' 
     
    for i, c in enumerate(s): 
        if c.isdecimal(): 
            num = 10 * num + int(c) 
            if i == len(s) - 1 or not s[i + 1].isdecimal(): 
                if op == '+': 
                    res += num 
                    last = num 
                elif op == '-': 
                    res -= num 
                    last = -num 
                elif op == '*': 
                    res = res - last + last * num 
                    last = last * num 
                else: 
                    res = res - last + int(last / num) 
                    last = int(last / num) 
                num = 0 
        else: 
            if c in ['+', '-', '*', '/']: 
                op = c 
                 
    return res