Discuss / Python / 那些答案里的函数有些看不懂的说。我来个虽然复杂但是简单的。

那些答案里的函数有些看不懂的说。我来个虽然复杂但是简单的。

Topic source

Dreamer_DK

#1 Created at ... [Delete] [Delete and Lock User]

虽代码较复杂,但是逻辑比较简单。

    #字符转为整数
    def chr2num(x):
        return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[x]
    #配合chr2num做成字符串转为整数
    def zrs(a,b):
        return a*10+b
    #判断有无小数点,有的话计算位数(w),删除小数点
    while s.find('.') != -1:
        #倒着数看小数点在第几位,就是小数位数(w)
        w = s[::-1].find('.')
        s = s.replace('.','')
        break
    else:
        w = 0
    #有小数点,已经转为无小数点字符串,转为整数再除以(10的'小数点位数(w)'次方)就得到数字
    while w != 0:
        return reduce(zrs,map(chr2num,s))/(10**w)
    #没有小数点,直接转为数字
    else:
        return reduce(zrs,map(chr2num,s))

  • 1

Reply