Discuss / Python / 作业3

作业3

Topic source

不知小岛

#1 Created at ... [Delete] [Delete and Lock User]
    def char2num(s):
        digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
        return digits[s]
    a1=s.split('.')[0]
    a2=s.split('.')[1]
    b1= reduce(lambda x,y:x*10+y,map(char2num,a1))
    b2= reduce(lambda x,y:x*0.1+y,map(char2num,a2[::-1]))
    return b1+b2*0.1

Hankim_Yuqing

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

最后一个return莫名其妙……

这能运行出来么……

你看下这行 b2= reduce(lambda x,y:x*0.1+y,map(char2num,a2[::-1]))
a2[::-1] 得到的是一个倒序排列的小数部分。原本是456 切片以后是654
map(char2num,a2[::-1] 返回的是int 654
x*0.1+y关键是这个算法会是以下过程
setp1:
    6*0.1+5  = 5.6

setp2:
   5.6*0.1+4 =4.56

reduce返回的是B2=4.56所以需要b2*0.1才是完整的小数部分。


  • 1

Reply