3
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

4

1 に答える 1

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('+')])
于 2013-03-14T08:45:56.783 に答える