# -*- coding: utf-8 -*- s = raw_input() ops, nums = [], [] n = len(s) ret = -1 flag = True i = 0 while i < n:     if s[i].isdigit():         j = i         num = 0         while j < n and s[j].isdigit():             num = num * 10 + ord(s[j]) - ord('0')             j += 1         nums.append(num)         i = j - 1     elif s[i] == ')':         if len(ops) == 0:             flag = False             break         op = ops[-1]         ops.pop()         if op == '^' and len(nums) > 0:             ans = nums[-1]             nums.pop()             nums.append(ans + 1)         elif (op == '*' or op == '+') and len(nums) > 1:             a, b = nums[-1], nums[-2]             nums.pop()             nums.pop()             nums.append((a * b) if op == '*' else (a + b))         else:             flag = False             break         if len(ops) == 0 or ops[-1] is not '(':             flag = False             break         ops.pop()         if len(ops) == 0:             ret = nums[-1]         if len(ops) == 0 and i < n - 1 and len(nums) > 0:             nums.pop()     elif s[i] == ' ':         pass     else:         ops.append(s[i])     i += 1 if len(ops) > 0:     flag = False if ret is not -1:     print ret else:     print -1 if flag == False else nums[-1]
点赞 1

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务