第一题不是让大家用title()来解的吧?谁帮我看看
Topic source第三题的答案,看看能不能再简化点?
i = s.index('.')
def char2num(a):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[a]
return reduce(lambda x, y: x * 10 + y, map(char2num, s[:i]+s[i+1:])) / 10**(len(s)-i-1)
代码不是越简练越好的,太简略可读性就会略差。
另外提一个bug,如果给你的字符串是整数,没有小数点,你的程序会出错
建议用find()
替换index()
贴上我的代码:
#!/usr/bin/env python
# encoding: utf-8
from functools import reduce
def str2float(s):
def del_dot(s):
return s.replace('.', '')
def str2num(s):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
_result = reduce(lambda x, y: x * 10 + y, map(str2num, del_dot(s)))
if s.find('.') == -1:
return _result
else:
return _result / (10 ** (len(s) - s.find('.') - 1))
print('str2float(\'123.456\') =', str2float('123.456'))
- 1
雷蒙德张
第一题是让大家用map来实现类似于title函数的功能,如果直接调用,那还有啥意义?
我试着按照我的理解写了一段,大家帮看看,能不能再简化一点。