Discuss / Python / 写不出高级的代码,只能又臭又长,但是思路还是比较清晰的

写不出高级的代码,只能又臭又长,但是思路还是比较清晰的

Topic source

###练习3

from functools import reduce
DIGITS1={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'.':'.'}
DIGITS2={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2float(s):
    def str2num(s):
        return DIGITS1[s]
    def str2numint(s):
        return DIGITS2[s]
    def num2floatint(x,y):
        return x*10+y
    if '.' in s:
        a=list(map(str2num,s))
        p=a.index('.')
        inta=a[0:p]
        n=len(a)
        floata=a[p+1:n+1]
        nf=len(floata)
        return reduce(num2floatint,inta)+reduce(num2floatint,floata)*10**(-nf)
    else:
        a=list(map(str2numint,s))
        return reduce(num2floatint,a)

  • 1

Reply