Discuss / Python / 第三题有大神帮忙看看错在哪吗

第三题有大神帮忙看看错在哪吗

Topic source

铂公子

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

    DIGITS = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6}

    def char2num(s):

        num1 = s.split(".")[0]

        num2 = s.split(".")[-1]

        num = num1 + num2

        print(num)

        return DIGITS[num]

    def func(x,y):

        return 10 * x + y

    return reduce(func,map(char2num,s))

    #return map(char2num,s)

想请教一下,为什么return map(char2num,s) 调用char2num() 时,print输出是123456,而return reduce(func,map(char2num,s))调用时,结果就变成了11 ?

铂公子

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

#修改了一下,已测试通过 

   index = s.index('.') #确认小数点后有几位

    s = s.split(".")[0]+s.split(".")[-1] #s去掉小数点

    DIGITS = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6}

    def char2num(s):

        return DIGITS[s]

    def func(x,y):

        return 10 * x + y

    return reduce(func,map(char2num,s))/(10**index) #小数点后面有几位,就除以10的几次方

index函数不是索引嘛?可以这么用吗?我写了个测试,发现计算的是小数点之前的位数。是不是应该是计算了从0开始,到小数点的位数啊


  • 1

Reply