给定一个合法的表达式字符串,其中只包含非负整数、加法、减法以及乘法符号(不会有括号),例如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()