Discuss / Python / 两种方法

两种方法

Topic source

from functools import reduce

def str2num(s):

    if s.count('.')==1:

       s1=int(s[:s.index('.')])

       s2=int(s[s.index('.')+1:])/((len(s)-(s.index('.')+1))*10)

       return s1+s2     

    return int(s)

def calc(exp):

    ss = exp.split('+')

    ns = map(str2num, ss)

    return reduce(lambda acc, x: acc + x, ns)

def main():

    r = calc('100 + 200 + 345')

    print('100 + 200 + 345 =', r)

    r = calc('99 + 88 + 7.6')

    print('99 + 88 + 7.6 =', r)

main()

from functools import reducedef str2num(s):    try:        return int(s)    except :        return float(s)def calc(exp):    ss = exp.split('+')    ns = map(str2num, ss)    return reduce(lambda acc, x: acc + x, ns)def main():    r = calc('100 + 200 + 345')    print('100 + 200 + 345 =', r)    r = calc('99 + 88 + 7.6')    print('99 + 88 + 7.6 =', r)main()

  • 1

Reply