最近在学习廖雪峰老师的python教程所以最在这里插入代码片近更新的将主要是课后习题,今天学习的是高阶函数reduce/map
课后练习题如下?:
利用map和reduce编写一个str2float函数,把字符串’123.456’转换成浮点数123.456:
解题如下?:
#!/usr/bin/env python3
from functools import reduce
#将字符串转化为浮点数
def str2float(s):
dicts = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
mod = len(s) - s.index('.') -1
#**表示次方
return reduce(lambda x,y:x*10+y, map(lambda m:dicts[m],s.replace('.','')))*0.1**mod
#测试函数
print('str2float(\'123.456\') =', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
print('测试成功!')
else:
print('测试失败!')
解题说明:
相信大家学习了reduce之后一定都知道如何将整数样子的字符串转化为整数
我们可以认为12.3就是123.0然后小数点向左?移动移动一位;
我们要实现这个就是把整数➗10
所以分为以下几步
另外说明:
本函数中用到的几点:
1.**表示次方
2.lambda定义一个匿名函数,用来得到一个简单的函数非常方便