2013-03-14 97 views
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这样的表达式。为什么我得到“没有”

+0

为什么我会得到'无'?不知道,可能会尝试一种新的须后水或不同的酒吧? – gecko 2013-03-14 10:31:16

回答

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('+')]) 
相关问题