函数习题2

第一题
# 1.写出完整的装饰器(不用考虑带参装饰器,就是普通装饰器)语法
def outter(fn):
    def inner(*args,**kwargs):
        res=fn(*args,**kwargs)
        print("新增功能")
        return res
    return inner
@outter
def fn(*args,**kwargs):
    print("你好")
fn()
"""
"""
 第二题
#2.有一个计算两个数和的方法,为其添加一个确保两个参数都是int或float
类型的装饰器,保证运算不会抛异常。
def check_num(func):
    def indder(n1,n2):
        b1=isinstance(n1,int) or isinstance(n1,float)
        b2=isinstance(n2,int) or isinstance(n2,float)
        if not (b1 and b2):
            print("不能求和")
            return
        return func(n1,n2)
    return indder
@check_num
def add(n1,n2):
    return n1+n2
print(add(3,4))
"""
"""
 第三题
 3.有一个一次性录入人名并返回人名的方法(人名只考虑存英文),为其添加
一个装饰器,使得处理后人名首字母一定大写
def outter(func):
    def inner():
        res=func()
        return res.title()
    return inner
@outter
def get_name():
    name=input('name: ')
    return name
print(get_name())
4.需求:用函数修改文件
def check_file(filename,old,new):
    import os
    with open(filename,'r',encoding='utf-8') as read_f:
            with open('.filename','w',encoding='utf-8') as write_f:
                for line in read_f:
                    if old in line:
                        write_f.write(line.replace(old,new))
                    else:
                        write_f.write(line)
            os.remove(filename)
            os.rename('.filename',filename)
check_file('001.txt','鱼','胡')
 
5.需求:写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def check_list(list):
    if len(list)>2:
        list=list[0:2]
        return list
    else:
        return list
print(check_list([1]))
难点:list=list[0:2]
 
5、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def check_list(list):
    return list[::2]
print(check_list([1,2,3,4,5,6]))
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/jingandyuer/p/10679433.html