Discuss / Python / 2022/7/26

2022/7/26

Topic source

第三题拆分写的略麻烦 可以直接切片 再改一改

#1
def normalize(name):
    #return name.capitalize()
    return name[:1].upper()+name[1:].lower()

#2
from functools import  reduce
def prod(L):
    return reduce(lambda x,y:x*y,L)

#3
#思路 将小数字符串拆分为整数字符串列表 一个点 倒序的小数部分整数字符串列表 第一个列表x*10+y reduce&map 加上 第二个列表x*0.1+y reduce&map*0.1 即为最后结果
from functools import  reduce

def str2float(s):
    DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
    i=0
    str1=[]
    str2=[]
    def char2num(s):
        return DIGITS[s]

    def fn1(x, y):
        return x * 10 + y

    def fn2(x, y):
        return x * 0.1 + y
    l=len(s)
    while i<l-1 and s[i]!='.':
        str1.append(s[i])
        i=i+1
    i=i+1
    while i<l:
        str2.insert(0,s[i])
        i=i+1
    #print('str1',str1,)
    #print('str2',str2,)
    return reduce(fn1,map(char2num,str1))+reduce(fn2,map(char2num,str2))*0.1 

  • 1

Reply