day 9 - 2 函数练习
1、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def func(lis): print(lis[1::2]) #取偶数 return lis[::2] #取计数 f=[1,2,3,4,5,6] print(func(f))
2、写函数,判断用户传入的值(字符串、列表、元组)长度是否大于 5 。
#两行就搞定 def func2(lis): return len(lis)>5 #大于 5 则自动返回 True f=[1,2,3,4,5,6] print(func2(f))
#比较 low 的方法 def func2(lis): k = len(lis) if k > 5: print("大于 5") else: print("小于等于 5") f=[1,2,3,4,5,6] func2(f)
3、写函数,检查传入列表的长度,如果大于 2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
#无需判断列表长度是否大于 2 切片都会自动截取对应位置的值的 def func3(lis): return lis[0:2] f=[1,2,3,4,5,6] print(func3(f))
4、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,并返回结果。
#运用字典来储存和调用值 def func4(str): dic = {'letter':0,"num":0,"space":0,'other':0} for i in str: if i.isalpha(): dic['letter'] +=1 elif i.isdigit(): dic['num'] += 1 elif i ==" ": dic['space'] += 1 else: dic["other"] += 1 return dic f="%123abc qwe789%" print(func4(f))
#比较 low 的 idea def func4(str): letter = 0 num = 0 space = 0 other = 0 for i in str: if i.isalpha(): letter +=1 elif i.isdigit(): num += 1 elif i ==" ": space += 1 else: other += 1 return(letter,num,space,other) f="%123abc qwe789%" print(func4(f))
5、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。
def func5(space): if type(space) is str: #参数是字符串 for i in space: if i == " ": return True if type(space) is list or type(space) is tuple: #参数为列表或元祖 for i in space: if not i: return True f="%123abc qwe789%" print(func5(f)) f2 = [1,2,3] print(func5(f2)) f3 = (1,2,"",3) print(func5(f3))
6、写函数,检查传入字典的每一个 value 的长度,如果大于 2 ,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]} def func6(d): for i in d: if len(d[i]) > 2: d[i] = d[i][:2] return d print(func6(dic)) print(func6({'name':'ysg','age':'1234'}))
7、写函数,接收两个数字参数,返回比较大的那个数字。
#三元运算 def func7(a,b): return a if a>b else b print(func7(56,23))
#比较 low 的 idea def func7(a,b): if a>b: return a else: return b
print(func7(23,56))
8、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)
#其实传入函数中的是三个参数 #文件名 修改的前内容 修改后的内容 def func8(filename,a,b): with open(filename,encoding='utf-8') as f,open('%s.bak'%filename,'w',encoding='utf-8')as f2: for line in f: if a in line: line = line.replace(a,b) f2.write(line) import os os.remove(filename) # 删除文件 os.rename('%s.bak'%filename,filename) # 重命名文件 func8('D:/py/log/test.txt','in','IN')