作业题,函数
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)