Discuss / Python / answer

answer

Topic source

第一题:

# -*- coding:utf-8 -*-
def normalize(name):
    return name[0].upper()+name[1:].lower()

第二题:

# -*- coding: utf-8 -*-
from functools import reduce
def prod(L):
    def mul(x,y):
        return x*y
    return reduce(mul,L)

第三题:

# -*- coding: utf-8 -*-
#str2float,先将str用split以小数点分开
#然后分别用fn转成int,前一半加后一半/1000
from functools import reduce
def str2float(s):
    def fn(x,y):
        return x*10+y
    def char2int(l):
        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[l]
    L=s.split('.')
    return reduce(fn,map(char2int,L[0]))+reduce(fn,map(char2int,L[1]))/1000

陈沉默默

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

如果把\1000

换成

len(s.split('.'))*10

@陈沉默默,应该是换成

pow(10,len(L[1]))

  • 1

Reply