函数练习

#1.检查获取传入列表或元组的对象的所有奇数位索引对应的元素,并返回给调用者。
def func(l1):
    return l1[1::2] #切片
print(func([1,2,3,4,5]))

#2.写函数,判断用户传入对象(字符串,列表,元组)长度是否大于5。
def func1(l2):
    return len(l2)>5
print(func1([1,2,3,4,5,6]))

#3.写函数,检查传入列表的长度。如果大于2,保留前两个长度内容,并将新内容返回给调用者。
def func2(l3):
    if len(l3)>2:
        return l3[:2]
print(func2([1,2,3,4,5]))

#4.写函数,计算传入字符串【数字】、【字母】、【空格】以及【其他】的个数,并返回结果。
def func3(l4):
    dic = {'num':0,'alpha':0,'space':0,'other':0}
    for i in l4:
        if i.isdigit():
            dic['num'] += 1
        elif i.isalpha():
            dic['alpha'] += 1
        elif i.isspace():
            dic['space'] += 1
        else:
            dic['other'] += 1
    return  dic
print(func3('+1231dfafa -123 ='))

#5、写函数,检查用户传入对象(字符串,列表,元组)的每一个元素是否含有空内容,并返回结果。
def func4 (l5):
    if type(l5) is str and l5:
        for i in l5:
            if i == ' ':
                return True
    elif l5 and type(l5) is list or type(l5) is tuple:
        for i in l5:
            if not i:
                return True
    elif not l5:
        return True
print(func4('abc'))

#6丶写函数,检查传入字典的每一个value的长度,如果大于2,那么保留前两个长度的内容,并将新内容返回给调用者。
# dic = {'k1':'v1v1','k2':[11,22,33,44]}
# ps:字典中的value只能是字符串或者列表

def func5(dic):
    for k in dic:
        if len(dic[k]) >2:
            dic[k] = dic[k][:2]
    return dic
dic = {'k1':'v1v1','k2':[11,22,33,44]}
print(func5(dic))

#7丶写函数,接受两个数字参数,返回比较大的那个数字
def func6(a,b):
    c = a if a>b else b #三元运算
    return c
print(func6(6,9))

#8丶写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作。
def func7(filename,old,new):
    with open(filename,encoding='utf-8') as f ,open('%s.bak'%filename,'w',encoding='utf-8') as f2:
        for line in f:
            if old in line:
                line = line.replace(old,new)
            #写文件
            f2.write(line)

    import os
    os.remove(filename)#删除文件
    os.rename('%s.bak'%filename,filename)#重命名文件
func7('log','LOWOW','--LOWOW--')

  

posted @ 2018-08-04 10:46  BZM  阅读(148)  评论(0)    收藏  举报