给定一个合法的表达式字符串,其中只包含非负整数、加法、减法以及乘法符号(不会有括号),例如7+3*4*5+2+4-3-1,请写程序计算该表达式的结果并输出;
给定一个合法的表达式字符串,其中只包含非负整数、加法、减法以及乘法符号(不会有括号),例如7+3*4*5+2+4-3-1,请写程序计算该表达式的结果并输出;
输入有多行,每行是一个表达式,输入以END作为结束
每行表达式的计算结果
7+3*4*5+2+4-3-1 2-3*1 END
69 -1
每个表达式的长度不超过10000,保证所有中间结果和最后结果在[-2e9,2e9]范围内
class MainActivity: def main(self): while True: # Read the data s = input() if s == 'END': break # Get the result result = eval(s) print(result) if __name__ == '__main__': M = MainActivity() M.main()方法二:用栈模拟
class MainActivity: def main(self): while True: # Read the data s = input() if s == 'END': break # Initialization stack = [] negativeFlag = False timesFlag = False numCache = [] # Traverse for char in s: if char == '+': num = int(''.join(numCache)) numCache = [] if negativeFlag: num = -num if timesFlag: stack.append(num * stack.pop()) else: stack.append(num) timesFlag = False negativeFlag = False elif char == '-': num = int(''.join(numCache)) numCache = [] if negativeFlag: num = -num if timesFlag: stack.append(num * stack.pop()) else: stack.append(num) timesFlag = False negativeFlag = True elif char == '*': num = int(''.join(numCache)) numCache = [] if negativeFlag: num = -num if timesFlag: stack.append(num * stack.pop()) else: stack.append(num) timesFlag = True negativeFlag = False else: numCache.append(char) if numCache: num = int(''.join(numCache)) numCache = [] if negativeFlag: num = -num if timesFlag: stack.append(num * stack.pop()) else: stack.append(num) # Get the result result = sum(stack) print(result) if __name__ == '__main__': M = MainActivity() M.main()