Discuss / Python / 第十四天打卡

第十四天打卡

Topic source

第一题:

def normalize(name):

    return name[0].upper()+name[1:].lower()

# 测试:
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)

['Adam', 'Lisa', 'Bart']

第二题:

def prod(L):

    def fn(x,y):

        return x * y

    return reduce(fn, L)

print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))
if prod([3, 5, 7, 9]) == 945:
    print('测试成功!')
else:
    print('测试失败!')

3 * 5 * 7 * 9 = 945 

测试成功!

第三题:

def str2float(s):

    DIGITS = {str(v): v for v in list(range(10))}

    s1,s2=s.split('.')

    def fn(x, y):

        return x * 10 + y

    def char2num(s):

        return DIGITS[s]

    f1=reduce(fn, map(char2num,s1))

    f2=reduce(fn, map(char2num,s2))/(10**len(s2))

    return f1+f2

print('str2float(\'123.456\') =', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
    print('测试成功!')
else:
    print('测试失败!')

str2float('123.456') = 123.456 

测试成功!

来源:https://www.bilibili.com/video/BV1qE411674j?p=58

影落潮生y

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

受教了,朋友,\抱拳

1、split方法是str带有的,我还傻傻构建了一个;

2、小数位的处理用的好,全部用reduce(fn,f2)处理后再整体移动小数点,秒啊!


  • 1

Reply