from __future__ import division
from math import*
def add(*args):
return sum(args)
def times(*args):
s=1
for i in range(len(args)-1):
s*=args[i]*args[i+1]
return s
def divide(*args):
s=1
for i in range(len(args)-1):
s=args[i]/args[i+1]/s
return s
def sqroot(arg):
return sqrt(arg)
def get(data,s):
if len(data)==1:
s=add(s,int(data))
return s
s=add(s,int(data[data.index('+')-1]))
cut=data[(data.index('+')+1):]
get(cut,s)
user=raw_input()
print str(get(user,0))
为什么函数返回None
而不是s
的值(如果我打印s
值是正确的)?该函数只解析像1+1+1
这样的表达式。
答案 0 :(得分:2)
如果len>,您忘记返回值1.试试这个:
def get(data,s):
if len(data) == 1:
return add(s, int(data))
s = add(s, int(data[data.index('+')-1]))
cut = data[(data.index('+')+1):]
return get(cut,s)
你还需要考虑字符串拆分,你的索引是不安全的。您可以查看RPN或至少尝试类似的事情(如果您的expr只有+):
add(*[int(x) for x in data.split('+')])