问题描述:
输入四则运算表达式,仅由数字、+、-、*、/、()组成,没有空格,要求求其值,假设运算符结果都是整数,/结果也是整数
输入:
(2+3)*(5+7)+9/3
输出:
63
第一种解法:eval()函数
>>> eval('(3+5)*2')
16
第二种解法:递归
搞清楚表达式的递归定义很关键
- 表达式=项或项的加减
- 项=因子或因子的乘除
- 因子=(表达式)或整数
代码:
def expression_value():
global i
a=term_value()
if i==len(s):
return a
c=s[i]
while c in '+-':
i+=1
b=term_value()
if c=='+':
a+=b
else:
a-=b
if i==len(s):
return a
else:
c=s[i]
if c==')':
i+=1
return a