#1、简述普通参数、指定参数、默认参数、动态参数的区别
#1.普通参数就是传入的函数,没有默认值
def f(a):
a = a + 1
return a
print(f(3))
#2.指定参数
def f(a,b,c):
d = a + b + c
return d
print(f(2,4,5)) #没有指定参数就会按照顺序分别赋值给a,b,c
print(f(b=3,a=2,c=1)) #指定参数的值,不按照原来的顺序
#3.默认参数
def f(a,b=3): #在函数里指定了默认值
c = a + b
return c
print(f(3)) #传参数的时候可以传一个,赋值给a;b就等于原来的值
print(f(4,7)) #按照顺序赋值,a=4,b=7就被重新赋值
#4.动态参数
#动态参数 *args和**kwargs 是指当我们需要传入多个参数时,他们就代表多个参数,就不需要在括号里指定多个参数了。
def f(a,*args,**kwargs):
print(a,args,type(args),kwargs,type(kwargs))
d=f(22,33,44,k1=55,k2=66)
#2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
def sum(count):
number = 0
string = 0
space = 0
other = 0
for i in count:
if i.isdigit():
number += 1
elif i.isalpha():
string += 1
elif i.isspace():
space += 1
else:
other +=1
return '数字:'+str(number) + ';字母:'+ str(string) + ';空格:'+ str(space) +';其他:' + str(other)
print(sum('my name is fana 1234567'))
#3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def sum(string):
if isinstance(string,(str,tuple,list,dict)):
if len(string) >= 5:
return '大于或等于5'
else:
return '小于5'
return None
#4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def space(args):
ret = '没有空内容'
if len(args) == 0:
ret = '有空内容'
for a in args:
if a.isspace():
ret = '有空内容'
return ret
print(space('fan a fan'))
#5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def lis(args):
if len(args) > 2:
return args[:2]
if len(args) <= 2:
return args[0::]
print(lis([1,2]))
#6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def lis(args):
lis2 = []
for i in args:
if args.index(i) % 2 == 1:
lis2.append(i)
return lis2
a = [1,2,3,4,5,6,7]
print(lis(a))
#7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
fana = {"k1": "v1v1", "k2": [11,22,33,44]}
#PS:字典中的value只能是字符串或列表
def dic(args):
dic2 = {}
for k,v in args.items():
if len(v) > 2:
dic2[k] = v[:2]
else:
dic2[k] = v
return dic2
fana = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
print(dic(fana))