作业题,函数

1.写函数,计算传入字符串中数字、字母、空格以及其他的个数

usr_input=str(input('>>>'))
def contstr(args):
    digit=0
    space=0
    alpha=0
    other=0
    for word in args:
        if word.isdigit():
            digit+=1
        if word.isspace():
            space+=1
        if word.isalpha():
            alpha+=1
        else:
            other+=1
    print('digit:',digit,'space:',space,'alpha:',alpha,'other:',other)
contstr(usr_input)

2.写函数,判断用户输入的对象(字符串,列表,元组)长度是否大于5

usr_input=123#输入任意值
def abc(type):
    def bcd(changdu):#函数嵌套
        if len(changdu)>5:
            b='长度大于5'
            return b#弄明白了返回值怎么用
        else:
            b = '长度不大于5'
            return b
    if isinstance(type,str):
        c='this is str '+bcd(usr_input)
        return c.title()
    if isinstance(type,tuple):
        c = 'this is tuple '+bcd(usr_input)
        return c.title()
    if isinstance(type,list):
        c = 'this is list ' + bcd(usr_input)
    else:
        return
complete=abc(usr_input)
print(complete)

3.写函数,检查用户传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新的内容返回给调用者

usrlist=[15,18,32]
def abc(listlen):
    if len(listlen)>2:
        c=listlen[0:2]
        return c
    else:
        c=listlen
        return c
ok=abc(usrlist)
print(ok)

4.写函数,检查获取传入列表或者元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者

def fun_index(ret):
    if isinstance(ret,list) or isinstance(ret,tuple):
        new=[]
        for i in range(len(ret)):
            if i%2==1:
                new.append(ret[i])
            else:
                continue
        return new#返回值要放到for循环结束后,之前放倒了添加列表值之下,结果添加一次值就返回值了,循环结束
    else:
        return#返回None

usrinput=[11,22,33,44,55,66,77]
c=fun_index(usrinput)
print(c)

5.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

 集合和字典为值的话是无序的,不知道怎么保留前两个长度。或者说是我对描述的功能理解有误,以后再说

def fun1(arge):
    okdic={}
    for k,v in arge.items():
        if isinstance(v,str) or isinstance(v,int) or isinstance(v,tuple):
            if len(v)>2:
                okdic[k]=v[0:2]#之前报错是因为把切片的:写成了,看了老师的视频才发现
            else:
                okdic[k]=v
        else:
           okdic[k]=v
    return okdic
dic={12:'123',13:'12',14:'asdf',15:'as',16:(12,22,32),17:{16,22,78}}#值如果是int,是不能计算长度的,不明白为什么,或者说是对int还没弄明白
c=fun1(dic)
print(c)

 

posted @ 2018-01-05 16:58  xusuns  阅读(180)  评论(0编辑  收藏  举报