新农上路
- 积分
- 99
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2011-11-7
- 最后登录
- 1970-1-1
|
- class Solution:
- def eval(self, expr):
- operator = expr[0]
- expr = expr[1:]
- evaled_expr = []
- for it in expr:
- if isinstance(it, list):
- evaled = self.eval(it)
- evaled_expr.append(evaled)
- else:
- evaled_expr.append(it)
- res = 0
- if operator == '+':
- res = sum(evaled_expr)
- elif operator == '*':
- res = 1
- for it in evaled_expr:
- res *= it
- elif operator == '-':
- res = evaled_expr[0] if len(evaled_expr) > 0 else 0
- for it in evaled_expr[1:]:
- res -= it
- elif operator == '/':
- res = evaled_expr[0] if len(evaled_expr) > 0 else 0
- for it in evaled_expr[1:]:
- res /= it
- return res
复制代码 Test Cases:- import unittest
- from solution import Solution
- class Test(unittest.TestCase):
- def test1(self):
- s = Solution()
- expr = ['+', 1, 2, ['*', 1, 3]]
- res = s.eval(expr)
- self.assertEqual(res, 6)
- def test2(self):
- s = Solution()
- expr = ['+', 1, 2, ['*', 2, 3]]
- res = s.eval(expr)
- self.assertEqual(res, 9)
- def test3(self):
- s = Solution()
- expr = ['+', ['*'], ['-'], ['/']]
- res = s.eval(expr)
- self.assertEqual(res, 1)
- def test4(self):
- s = Solution()
- expr = ['+', 1, 2, ['*', 2, 3], ['-', 4, 5], ['/', 8, 2]]
- res = s.eval(expr)
- self.assertEqual(res, 12)
- if __name__ == '__main__':
- unittest.main(verbosity=2)
复制代码 |
|