Discuss / Python / 第三题

第三题

Topic source
#利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:
#-*- coding:utf-8 -*-
from functools import reduce

def char2num(s):

    return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]

def f1(a,b):
    return a*10+b

def str2float(s):
    L=[]
    d=s.find('.')
    if d!=-1:
        for i in s:
            if i!='.':
                L.append(i)
        j=reduce(f1,map(char2num,L))
        j=j*1.0/(10**(len(s)-d-1))
    else:
        j=reduce(f1,map(char2num,s))
    return j

print('str2float(\'123.456789\') =', str2float('123.456789'))

  • 1

Reply