作业

 

 

 1.简述普通参数、指定参数、默认参数、动态参数的区别。

  普通参数:普通参数就是像下面这段函数传入的参数一样,传入函数,没有默认值。

1 def  a1(a):
2     print(a)
3     return True
4 b=a1(3)
5 print(b)

  指定参数:

1 def  a1(a,b,c):
2    d = a+b+c
3    return d
4 e=a1(1,2,3)#分别把1,2,3 按顺序传给a,b,c
5 print(e)
6 f=a1(b=1,a=2,c=3)#指定a,b,c 的值,传给def a1
7 print(f)

  默认参数

1 def  a1(a=123):#a=123设置默认值、
2     return a
3 b = a1("把我传过去")#有值传过去时,则使用传过去的值。
4 print(b)
5 
6 d = a1()#没有值,传过去则使用默认值 a=123。
7 print(d)

  动态参数

1 def  a1(*args): #动态参数,传多个值时,不用在括号里制定多个参数。
2     print(args,type(args)) #args元组类型。
3 a1(1,2)
1 def  a1(**kwargs): #动态参数,传入键值对时前面两个*号。
2     print(kwargs,type(kwargs)) #args字典类型。
3 a1(k=456) #不传入键值对,则会报错。
1 def  a1(a,*args,**kwargs): #传任何值都不会报错。
2     print(kwargs,type(kwargs)) 
3 a1(k=456) 

 2.写函数,计算字符串中 字母、数字、空格和其他的个数

 1 def  aa(a):
 2     al_num = 0 #储存数字
 3     al_trip = 0 #储存空格
 4     al_lpha = 0 #储存字母
 5     al_other = 0#储存其他
 6     for i in a:
 7         #判断是否为数字
 8         if i.isdigit()==True:
 9             al_num = al_num +1
10         #判断是否为空格
11         elif i.isspace()==True:
12             al_trip = al_trip +1
13         #判断是否为字母
14         elif i.isalpha()==True:
15             al_lpha = al_lpha +1
16         #其他
17         else:
18             al_other = al_other +1
19     print(al_num )
20     print(al_trip)
21     print(al_lpha)
22     print(al_other)
23 
24 aa('ssssdf  @#!sdf435')

3.写函数,判断字符串、列表、字典的长度是否大于5

1 def aa(a,*args,**kwargs):
2     num = 0
3     if len(a)>=5:
4         print(len(a),'长度大于5')
5     else:
6         print(len(a), '长度小于5')
7 aa([11,22,33,44,55])
8 aa({'key1':11,'key2':22})

 

#老师的方法
def aa(arg):
    if isinstance(arg,str) or isinstance(arg,list)  or  isinstance( arg,type):
        if len(arg)>5:
            return True
        else:
            return False
    return None
temp =  'sadfasdfafdadfsa'
a1 = aa(temp)
print(a1)

 

4.写函数,判断字符串、列表、字典判断是否有空内容。

 1 def aa(a,*args,**kwargs):
 2     j=str()
 3     for i in a:
 4         j=str(i)
 5         if j.isspace() == True :
 6             print(a + '中元素有空格')
 7             break
 8         else:
 9             pass
10 
11      #aa('dfaffds sdg sdf')
12 li = ['sdsf sdfs',11,'asfda a adf']
13 aa(li)
#;老师的方法
def aa(args):
    ret = True
    for c in args:
        if c.isspace():
            ret  =  False
            break
    return ret

li2 =  aa('sdfsfsdfs sdf sd')
print(li2)

 

 5.写函数,传入列表大于长度大于2时,将内容保存到新列表,返回给调用者。

1 def aa(a):
2     if len(a) > 2:
3         return  a[0:2]
4   else:
5     return a
6 li = ["sdfs",'sdfs','sdfds']
7 li2=aa(li)
8 print(li2)

 6.写函数,传入元组或列表,并将元组或列表的奇数位 添加到一个新列表,然后返回值给调用者。

 1 ef aa(a,*args,**kwargs):
 2     j = 0
 3     li3 = []
 4     for i in a:
 5         if j % 2 == 1 :
 6             li3.append(i)
 7         j = j + 1
 8     return  li3
 9 
10 li = ["sdfs0",'sdfs1','sdfds3']
11 li2=aa(li)
12 print(li2)
13 li5 = ('sdfs0','asdas1','asdas3')
14 li6=aa(li5)
15 print(li6)
#老师的方法
def aa(a):

    li3 = []
    for i in range(len(a)):
        if i % 2 == 1 :
            li3.append(a[i])
    else:
        pass
    return  li3

li = ["sdfs0",'sdfs1','sdfds3',22,5456]
li2=aa(li)
print(li2)
li5 = ('sdfs0','asdas1','asdas3')
li6=aa(li5)
print(li6)

 

7.写函数,检查每个字典的values值长度,大于2的值,仅保留2位值,并将值返回给调用者

 1 def aa(a,*args,**kwargs):
 2     li1 =[]
 3     li2 = []
 4     for i in a.values():
 5         if len(i) >2:
 6             li1.append(i[0:2])
 7 
 8     return li1
 9 dic = {'key1':'dd','key2 ':'12345','key3':'sadfa'}
10 li=aa(dic)
11 print(li)
#老师的方法
def  f5(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':'vlvl','k2':[11,22,33],'k3':'12'}
r = f5(dic)
print(r)

 

 

 

 

posted @ 2019-06-05 22:15  Freechen0  阅读(81)  评论(0)    收藏  举报