老男孩python全栈s21day13作业

  1. 请为 func 函数编写一个装饰器,添加上装饰器后可以实现:执行func时,先输入"before",然后再执行func函数内部代码。

    def func():
        return 100 + 200
    
    val = func()
    
    def wrapper(func):
        def inner():
            print("before")
            v = func()
            print("after")
            return v
        return inner
    
    @wrapper
    def func():
        return 100 + 200
    
    val = func()
    
  2. 请为 func 函数编写一个装饰器,添加上装饰器后可以实现:执行func时,先执行func函数内部代码,再输出 “after”

    def func():
        return 100 + 200
    
    val = func()
    
    def wrapper(func):
        def inner():
            v = func()
            print("after")
            return v
        return inner
    @wrapper
    def func():
        return 100+200
    val = func()
    
  3. 请为以下所有函数编写一个装饰器,添加上装饰器后可以实现:执行func时,先执行func函数内部代码,再输出 “after”

    def func(a1):
        return a1 + "傻叉"
    
    def base(a1,a2):
        return a1 + a2 + '傻缺'
    
    
    def base(a1,a2,a3,a4):
        return a1 + a2 + a3 + a4 + '傻蛋'
    
    def wrapper(func):
        def inner(*args):
            v =func(*args)
            print("after")
            return v
        return inner
    @wrapper
    def func(a1):
        return a1 + "傻叉"
    @wrapper
    def base(a1,a2):
        return a1 + a2 + '傻缺'
    
    @wrapper
    def base(a1,a2,a3,a4):
        return a1 + a2 + a3 + a4 + '傻蛋'
    
  4. 请为以下所有函数编写一个装饰器,添加上装饰器后可以实现:将被装饰的函数执行5次,将每次执行函数的结果按照顺序放到列表中,最终返回列表。

    import random 
    
    
    def func():
        return random.randint(1,4)
    
    reuslt = func() # 执行5次,并将每次执行的结果追加到列表最终返回给result
    print(result) 
    
    import random
    
    def wrapper(func):
        def inner():
            func_list=[]
            for i in range(5):
            	func_list.append(func())
            return func_list
        return inner
    @wrapper
    def func():
        return random.randint(1,4)
    
    reuslt = func() # 执行5次,并将每次执行的结果追加到列表最终返回给result
    print(reuslt)
    
  5. 请为以下函数编写一个装饰器,添加上装饰器后可以实现:执行 read_userinfo 函时,先检查文件路径是否存在,如果存在则执行,如果不存在则 输出文件路径不存在,并且不再执行read_userinfo函数体中的内容,再将 content 变量赋值给None。

    def read_userinfo(path):
        file_obj = open(path,mode='r',encoding='utf-8')
        data = file_obj.read()
        file_obj.close()
        return data
    
    content = read_userinfo('/usr/bin/xxx/xxx')
    
    """
    温馨提示:如何查看一个路径是否存在?
    import os
    result = os.path.exists('路径地址')
    
    # result为True,则表示路径存在。
    # result为False,则表示路径不存在。
    """
    
    import os
    def wrapper(func):
        def inner(*args):
            if os.path.exists(*args):
                v = func(*args)
                return v
            else:
                print("文件路径不存在")
        return inner
    @wrapper
    def read_userinfo(path):
        file_obj = open(path,mode='r',encoding='utf-8')
        data = file_obj.read()
        file_obj.close()
        return data
    
    
    content = read_userinfo('/usr/bin/xxx/xxx')
    
    """
    温馨提示:如何查看一个路径是否存在?
    import os
    result = os.path.exists('路径地址')
    
    # result为True,则表示路径存在。
    # result为False,则表示路径不存在。
    """
    
  6. 请为以下 user_lis t函数编写一个装饰器,校验用户是否已经登录,登录后可以访问,未登录则提示:请登录后再进行查看,然后再给用户提示:系统管理平台【1.查看用户列表】【2.登录】并选择序号。

    # 此变量用于标记,用户是否经登录。
    #    True,已登录。
    #    False,未登录(默认)
    CURRENT_USER_STATUS = False 
    
    
    def user_list():
        """查看用户列表"""
    	for i in range(1, 100):
            temp = "ID:%s 用户名:老男孩-%s"  %(i,i,)
            print(temp)
        
    def login():
        """登录"""
        print('欢迎登录')
        while True:
        	username = input('请输入用户名(输入N退出):')
            if username == 'N':
                print('退出登录')
                return 
            password = input('请输入密码:')
            if username == 'alex' and password == '123':
                global CURRENT_USER
                CURRENT_USER_STATUS = True
                print('登录成功')
                return 
            print('用户名或密码错误,请重新登录。')
    def run():
        func_list= [user_list,login]
        while True:
            print("""系统管理平台
            1.查看用户列表;
            2.登录""")
            index = int(input('请选择:'))
            if index >=0 and index < len(func_list):
                func_list[index]()
            else:
                print('序号不存在,请重新选择。')
    
    run()
    
    # 此变量用于标记,用户是否经登录。
    #    True,已登录。
    #    False,未登录(默认)
    CURRENT_USER_STATUS = False
    
    
    def user_list():
        """查看用户列表"""
        for i in range(1, 100):
            temp = "ID:%s 用户名:老男孩-%s" % (i, i,)
        print(temp)
    
    
    def login():
        """登录"""
        print('欢迎登录')
        while True:
            username = input('请输入用户名(输入N退出):')
            if username == 'N':
                print('退出登录')
                return
            password = input('请输入密码:')
            if username == 'alex' and password == '123':
                global CURRENT_USER
                CURRENT_USER_STATUS = True
                print('登录成功')
                return
            print('用户名或密码错误,请重新登录。')
    
    def wrapper(func):
        def inner():
            if CURRENT_USER_STATUS:
                v = func()
                return v
            else:
                print('请登录后再进行查看')
                v = func()
                return v
        return inner
    @wrapper
    def run():
        func_list = [user_list, login]
        while True:
            print("""系统管理平台
            1.查看用户列表;
            2.登录""")
            index = int(input('请选择:'))
            if index >= 0 and index < len(func_list):
                func_list[index]()
            else:
                print('序号不存在,请重新选择。')
    run()
    
    
  7. 看代码写结果

    v = [lambda :x for x in range(10)]
    print(v)
    print(v[0])
    print(v[0]())
    #[<function <listcomp>.<lambda> at 0x0000024DDCBDBD90>, <function <listcomp>.<lambda> at 0x0000024DDCBDBD08>, <function <listcomp>.<lambda> at 0x0000024DDCBDBC80>, <function <listcomp>.<lambda> at 0x0000024DDCBDBE18>, <function <listcomp>.<lambda> at 0x0000024DDCBDBEA0>, <function <listcomp>.<lambda> at 0x0000024DDCBDBF28>, <function <listcomp>.<lambda> at 0x0000024DDCBE1048>, <function <listcomp>.<lambda> at 0x0000024DDCBE10D0>, <function <listcomp>.<lambda> at 0x0000024DDCBE1158>, <function <listcomp>.<lambda> at 0x0000024DDCBE11E0>]
    
    #<function <listcomp>.<lambda> at 0x0000024DDCBDBD90>
    #9
    
  8. 看代码写结果

    v = [i for i in range(10,0,-1) if i > 5]
    #[10,9,8,7,6]
    
  9. 看代码写结果

    data = [lambda x:x*i for i in range(10)] # 新浪微博面试题
    print(data)
    print(data[0](2))
    print(data[0](2) == data[8](2))
    #[<function <listcomp>.<lambda> at 0x0000024EB5C3BD90>, <function <listcomp>.<lambda> at 0x0000024EB5C3BD08>, <function <listcomp>.<lambda> at 0x0000024EB5C3BC80>, <function <listcomp>.<lambda> at 0x0000024EB5C3BE18>, <function <listcomp>.<lambda> at 0x0000024EB5C3BEA0>, <function <listcomp>.<lambda> at 0x0000024EB5C3BF28>, <function <listcomp>.<lambda> at 0x0000024EB5C41048>, <function <listcomp>.<lambda> at 0x0000024EB5C410D0>, <function <listcomp>.<lambda> at 0x0000024EB5C41158>, <function <listcomp>.<lambda> at 0x0000024EB5C411E0>]
    #18
    #True
    
  10. 请用列表推导式实现,踢出列表中的字符串,然后再将每个数字加100,最终生成一个新的列表保存。

    data_list = [11,22,33,"alex",455,'eirc']
    new_data_list = [ ... ] # 请在[]中补充代码实现。
    
    data_list = [11,22,33,"alex",455,'eirc']
    new_data_list = [ data_list[i]+100 for i in range(len(data_list)) if type(data_list[i])== int ]
    
  11. 请使用字典推导式实现,将如下列表构造成指定格式字典.

    data_list = [
        (1,'alex',19),
        (2,'老男',84),
        (3,'老女',73)
    ]
    # 请使用推导式将data_list构造生如下格式:
    info_list = {
        1:('alex',19),
        2:('老男',84),
        3:'老女',73)
    }
    
    data_list = [
        (1,'alex',19),
        (2,'老男',84),
        (3,'老女',73)
    ]
    info_list = {data_list[i][0]:data_list[i][1:] for i in range(len(data_list))}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值