第三题,结合各位大佬的,来个究极套娃版
Topic source上面的好像用了内置的int函数, 其实感觉这样比较好:
def str2float(s):
DIGITS = {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '0': 0}
s1, s2 = s.split('.')
s2 = s2[::-1] + '0'
return reduce(lambda x, y: x * 10 + y, map(lambda z: DIGITS[z], s1)) + reduce(lambda x, y: x / 10 + y, map(lambda z: DIGITS[z], s2))
当然不用split函数也可以:
def str2float(s):
DIGITS = {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '0': 0, '.': 0}
L = 10 ** (len(s) - s.index('.') - 1)
return reduce(lambda x, y: x + y if y == 0 else x * 10 + y, map(lambda z: DIGITS[z], s)) / L
总之方法是很多的, 想要简化的话甚至可以全合并到一行代码里, 最后还是感谢廖老师和评论区的大佬们, 真的学到很多
- 1
綾之桜