发布于2020-02-24 22:09 阅读(989) 评论(0) 点赞(16) 收藏(3)
题目来源:廖雪峰的官方网站
python初学者,求轻喷
题目:利用map和reduce编写一个str2float函数,把字符串’123.456’转换成浮点数123.456
这道题我想到两种思路
1.读取str中的数字和小数点位置,先将其转换为整数然后除以小数点的位置
2.将str中小数部分和整数部分分别还原,最后相加
对于方法二,在实际操作中我想不到能够同时还原小数部分和整数部分的函数,故舍弃,采用方法一
# -*- coding: utf-8 -*-
from functools import reduce
def str2float(s):
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 is_point(s):
return s != -1
#消除小数点
def fn(x,y):
return x*10+y
#还原成整数
def STR_TO_NUM(s):
return CHAR_TO_FLOAT[s]
#将字符串转换为数字list
L=list(map(STR_TO_NUM,s))
digit=len(L)-L.index(-1)-1
L=list(filter(is_point,L))
return reduce(fn,L)/pow(10,digit)
print('str2float(\'123.456\') =', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
print('测试成功!')
else:
print('测试失败!')
作者:雪儿
链接:https://www.pythonheidong.com/blog/article/232338/77edb0d4835a4bb43d87/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!