初学python,做的一个小题目,把string转成float的一个函数,一个简单的小问题都弄了好一会,感觉改进空间还很大,不过总算做出来了,应该有更多更好的思路。
# -*-coding:utf-8 -*-
from functools import reduce
#**********define prod function**********
def prod(L):
return reduce(mul,L)
#************define mul function**********
def mul(x,y):
return x*y
print('3*5*7*9=',prod([3,5,7,9]))#reduce基本用法
#**********define strint to float*********
def str2float(L):
def char2int(s):
return{'0':0,
'1':1,
'2':2,
'3':3,
'4':4,
'5':5,
'6':6,
'7':7,
'8':8,
'9':9,
'.':0}[s]
def int(x,y):
return x*10+y
def weishu(L):
for i in range(len(L)):
if L[i]=='.':
p=i #找出小数点位置i
break
else:
p=0 #无小数点,返回0
return p
def scrub_dec(L):
return L[:weishu(L)]+L[weishu(L)+1:]#去除小数点
p=len(L)-weishu(L)-1#根据小数点位置除10的p次幂
return reduce(int,map(char2int,scrub_dec(L)))/10**p
print('str2float(\'123.456\')=',str2float('123.456'))