利用map和reduce编写一个str2float函数,把字符串’123.456’转换成浮点数123.456
# -*- coding: utf-8 -*-
from functools import reduce
def str2float(s):
def f1(n1,n2):
return n1*10+n2
def f2(n1,n2):
return n1*10+n2
L=s.split(".")#将字符串按小数点分割,若为浮点类型则分割为两部分
if len(L)>1:#判断是否是浮点类型
a=reduce(f1,map(lambda x:int(x),L[0]))
b=reduce(f2,map(lambda x:int(x),L[1]))
return a+b/10**len(L[1])
return reduce(f1,map(lambda x:int(x),L[0]))
测试:
print('str2float(\'123.456\') =', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
print('测试成功!')
else:
print('测试失败!')
结果成功