利用map和reduce编写一个str2float函数, 把字符串'123.456'转换成浮点数123.456:
from functools import reduce
def str2float(s):
def fn(x, y):
return x * 10 + y
# 得到字符串中.的索引 123.456
n = s.index('.')
# 根据.的位置将字符串切片为两段
s1 = list(map(int, [x for x in s[: n]]))
s2 = list(map(int, [x for x in s[n + 1:]]))
# m ** n表示m的n次方
return reduce(fn, s1) + reduce(fn, s2) / 10 ** len(s2)
print('str2float(\'123.456\') = ', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
print('successful')
else:
print('error')