一,二,三题。第三题只需要记录下小数点的位置并且清除小数点,其他方法与转换为整数类似
Topic sourcedef str2float(s):
digits = {}
for i in range(10):
digits[str(i)] = i
dot = s[::-1].find('.')
s = s.replace('.', '')
return reduce(lambda x,y:x*10+y, map(lambda i:digits[i], s)) * 10 ** (-dot)
原代码是从字符串的左边开始计算的小数点位置,应该从右边开始计算。所以把
n = s.find('.')
改为
n = len(s) - s.find('.') - 1
或 n = s[::-1].find('.') 就可以了
- 1
是瑞瑞喔
三:
def str2float(s):
digits = digits = {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
n = s.find('.')
s = s.replace('.','')
return (reduce(lambda x,y:x*10+y,map(lambda a:digits[a],s)))*(10**(-n))
二:
def prod(L):
return reduce(lambda x,y:x*y,L)
一:
def normalize(name):
return name.title()