利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:
时间: 2023-04-23 08:00:15 浏览: 151
可以使用map将字符串中的每个字符转换成数字,然后使用reduce将数字组合成浮点数。具体实现如下:
```python
from functools import reduce
def str2float(s):
def char2num(c):
return {'': , '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[c]
def str2int(s):
return reduce(lambda x, y: x * 10 + y, map(char2num, s))
parts = s.split('.')
integer = str2int(parts[])
if len(parts) == 1:
return integer
else:
decimal = str2int(parts[1])
return integer + decimal / 10 ** len(parts[1])
```
首先定义了一个char2num函数,用于将字符转换成数字。然后定义了一个str2int函数,用于将字符串转换成整数。在str2int函数中,使用map将字符串中的每个字符都转换成数字,然后使用reduce将这些数字组合成整数。
接下来,将输入字符串按照小数点分成整数部分和小数部分。如果只有整数部分,直接将其转换成整数返回;否则,将小数部分转换成整数,然后除以10的小数部分长度次方,得到小数部分的值,最后将整数部分和小数部分相加得到最终的浮点数。
例如,对于输入字符串'123.456',首先将其分成整数部分'123'和小数部分'456',然后将整数部分转换成整数123,将小数部分转换成整数456,除以10的小数部分长度次方(即除以100),得到小数部分的值.456,最后将整数部分123和小数部分.456相加,得到最终的浮点数123.456。
阅读全文