Discuss / Python / 题目

题目

Topic source

第一题

def normalize(name):
    name = list(name)
    n = len(name)
    if ord(name[0]) >=97 and  ord(name[0])<=122:
        #说明首字母是小写字母
        name[0]=chr(ord(name[0])-32) #小写变成大写
        #大小写相差32,十进制
    for x in list(range(1,n)):
        if ord(name[x]) >=65 and  ord(name[x])<=96:
            #说明首字母是大写字母
            name[x]=chr(ord(name[x])+32)#大写变成小写
        elif ord(name[x]) >=97 and  ord(name[x])<=122:
            #说明该字母是小写字母
            pass
            
    return ''.join(name)

第二题

from functools import reduce

def cheng(x,y):
    return x*y

def prod(s):
    return reduce(cheng,s)

第三题

# ord(v)>=48 and ord(v)<=57 ascii码代表0-9
# ord(v)<48 or ord(v)>57 找出除0-9之外的元素 也就是小数点所在的位置


import math 
def str2float(s):
    data={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
    snum=[i for i,v in enumerate(s) if ord(v)<48 or ord(v)>57] 
    if len(snum)>1 or s[snum[0]]!='.':
        return print('data error:',s)
    else :
        news=s[:snum[0]]+s[snum[0]+1:]
    return (reduce(lambda x,y : x*10+y,map(lambda a:data[a],list(news))))/pow(10,len(s)-snum[0]-1)

  • 1

Reply