python:利用map和reduce编写一个str2float函数,把字符串'.1'转换成浮点数0.1:
时间:10-02
整理:3721RD
点击:
#!/usr/bin/env python3# -*- coding: utf-8 -*-from functools import reduceCHAR_TO_FLOAT = { '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '.': -1}def str2float(s): nums = map(lambda ch: CHAR_TO_FLOAT[ch], s) point = 0 def to_float(f, n): nonlocal point if n == -1: point = 1 return f if point == 0: return f * 10 + n else: point = point * 10 return f + n / point return reduce(to_float, nums, 0.0)print(str2float('.1'))
我怎么手算出来值是-90
这里计算得到的nums应该是含有-1,1两个值的,但是后续带入to_float第一次运算得到-9,然后-9和0.0带入to_float运算得到-90,求大神指点