第一题:
def normalize(name):
#这是最简单的方法: return name[0].upper()+name[1:].lower()
#如果非得要在此函数中使用map,是不是只能利用join方法了?使用str()是为了防止出现数字,可以简化
return name[0].upper()+"".join(str(s) for s in list(map(str.lower,name[1:])))
#如果list中没有数字可以直接这样写
return name[0].upper()+"".join(list(map(str.lower,name[1:])))
第二题:
#比较简单,没有什么可说的
def prod(L):
def f(x,y):
return x*y
return reduce(f,L)
第三题:
#思路:首先去掉字符中的点,将字符变为整数,然后根据点所在位置n决定将此整数除以10的n-1次方。本次作业不参考各位大佬使用的split、replace以及颠倒字符次序等超课程的方法,基本以课程范围内学习的内容完成作业,供大家参考,如有错误请多多见谅。
#将字符串变为整数的函数
def str2int(num):
digits={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def f(x,y):
return x*10+y
def str2num(string):
for w in string:
return digits[w]
return reduce(f,list(map(str2num,num)))
l=[]
#将字符串去点后,顺便定位点的位置。
for char in s:
if char=='.':
po=len(s)-len(l)-1
continue
l.append(char)
return str2int(l)/10**po