利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:

from functools import reduce
CHAR_TO_FLOAT = {
    '0': 0,
    '1': 1,
    '2': 2,
    '3': 3,
    '4': 4,
    '5': 5,
    '6': 6,
    '7': 7,
    '8': 8,
    '9': 9,
    '.': -1
}
def str2float(s):
    nums=map(lambda x:CHAR_TO_FLOAT[x],s)
    #print(list(nums))
    point = 0

    def str_division(f,n):
        nonlocal point
        if n == -1:
            point = 1
            return f
        if point == 0:
            return f * 10 + n
        else:
             point = point * 10
             return f + n / point
    return reduce(str_division,nums)

print(str2float('123.456'))

 

posted @ 2017-02-06 16:26  DevOps_QXW  阅读(1332)  评论(0编辑  收藏  举报