1.普通参数、指定参数、默认参数、动态参数的区别
普通参数即普通形式的传参。
def f(a): a = a+1 return a ret = f(3)
指定参数,按顺序插入参数,或者通过“=”指定参数。
def f(a,b,c) e = a+b+c #默认按顺序指定参数 f(1,2,3) #或者自己指定参数 f(c=1,b=2,a=3)
默认参数,即无需指定,函数默认给定。
动态参数,
*args 是指当我们需要传入多个参数时,可以用*args代表多个参数,不用分别在括号里指定多个参数
**kwargs, 当我们需要传入键值对类型的参数时就可以用**kwargs
def f(a,*args,**kwargs) ##万能模式,可以插入单个参数,多个参数,键值对参数
2.写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
def f1(a): num_num = 0 #数字个数 num_ABC = 0 #字母个数 num_space = 0 #空格个数 num_else = 0 #其他个数 for i in a: if i.isdigit(): num_num +=1 elif i.isalpha(): num_ABC +=1 elif i.isspace(): num_space +=1 else: num_else +=1 return num_num,num_ABC,num_space,num_else li = f1("zifuchuan") print(li)
3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def f3(arg): if len(arg)>5: return True else: return False ret = f2({'a':'b'}) print(ret)
4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def f4(*args): for i in args: if i == "": return True return False ret = f2([11,22,'',13]) print(ret)
5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def f5(*args): li = list() count = 0 if len(arg)>2: for i in args: count +=1 li.append(i) if count ==2: break return li else: return arg ret = f2(11,22,33) print(ret)
6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def f6(*args): count = 0 li = [] for i in args: count +=1 if count%2 ==1: li.append(i) return li ret = f6(11,22,33,44) print(ret)
7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def f7(arg): ret = {} for key,value in arg.items(): if len(value) > 2: ret[key] = value[0:2] else: ret[key] = value return ret dic = {"k1": "v1v1", "k2": [11, 22, 33, 44],"k3":"12"} r = f7(dic) print(r)
8、写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。
def f8(a1,a2,count): count +=1 a3 = a1 + a2 if count ==10: print(a1) return f8(a2,a3,count) f8(0,1,0)