程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(2)

2023-06(2)

【Python】利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456

发布于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('测试失败!')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
发布了1 篇原创文章 · 获赞 1 · 访问量 32


所属网站分类: 技术文章 > 博客

作者:雪儿

链接:https://www.pythonheidong.com/blog/article/232338/77edb0d4835a4bb43d87/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏

评论内容:(最多支持255个字符)