擅长:python、mysql、java
<p>这是一个<a href="http://alfasin.com/2015/08/05/a-simple-calculator-in-python/" rel="nofollow">nice exercise</a>,正如我在评论中所写的,我将忽略空白,从用户那里获得一个完整的表达式,然后解析它并计算结果。下面是一个小演示:</p>
<pre><code>def is_number(s):
try:
float(s)
return True
except ValueError:
return False
def calc(expr):
if is_number(expr):
return float(expr)
arr = expr.split('+')
if len(arr) > 1:
return sum(map(calc, arr))
arr = expr.split('-')
if len(arr) > 1:
return reduce(lambda x,y: x-y, map(calc, arr))
arr = expr.split('*')
if len(arr) > 1:
return reduce(lambda x,y: x*y, map(calc, arr), 1)
arr = expr.split('/')
if len(arr) > 1:
return reduce(lambda x,y: x/y, map(calc, arr))
print calc("3+4-2 *2/ 2") # 5
</code></pre>