您的位置:首页 > 编程语言 > Python开发

Python中 使用map()和reduce()函数编写一个str2float函数

2018-09-15 11:37 501 查看

Python中 使用map()和reduce()函数编写一个str2float函数

作为一个编程的初学者,最近在参照廖雪峰老师的网站资源学习python。

在网站中 Python教程/函数式编程/高阶函数/map/reduce 下有一道练习题是:

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

在参照了一些网上的代码之后,我写了一段代码,也同样实现了所要求的功能。鉴于我还没有看到与此相同的代码,所以贴出来分享一下。

—-代码—–

# -*- coding: utf-8 -*-
from functools import reduce

def str2float(s):

-----以下为输入内容-----

n=s.index('.') #确定小数点的位置
s1=s[:n] #将输入的字符串分为两部分,s1代表整数部分
s2=s[n+1:] #s2代表小数部分

#定义str2num()函数,将字符串转为元素为单个数字的list
digits={'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2num(s):
return digits[s]

#定义函数f,使上述得到的list中的数字元素转换为一个实数
def f(x, y):
return 10*x + y

#将所得到的整数部分和小数部分相加,即得到所求的float实数结果
return (reduce(f, map(str2num, s1))+reduce(f, map(str2num, s2))/10**len(s2))

-----以上为输入内容-----

print('str2float(\'123.456\') =', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
print('测试成功!')
else:
print('测试失败!')

上述代码中的map()函数与reduce()函数的应用,可参考廖雪峰的官方网站的相关内容以及实例:map/reduce

—-运行结果——

将代码进行验证,得到的运行结果显示正确:

—-结束—–

希望可以对大家有所帮助。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐