为什么我得到'无'

时间:2013-03-14 08:40:58

标签: python function return calculator addition

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这样的表达式。

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('+')])