总:python练习题一

本文介绍了小明用100元购买书籍的问题,涉及到不同价格类别书籍的组合计算,包括A类5元书,B类3元书和C类0.5元书。通过这个问题,探讨了Python解决实际问题的可能性和多种解决方案。
摘要由CSDN通过智能技术生成

题目3:
1.小明有100元,打算买100本书,A类书籍5元一本,B类书籍3元一本,C类书籍0.5元一本,算出小明一共够多少种买法?16分钟

for循环解法:

money=100
book=100
count=0
for a in range(int(money/5)):
    for b in range(int(money / 3)):
        for c in range(int(101)):
            if a*5+b*3+c*0.5<=100 and a+b+c==100:
                print(a,b,c)
                count+=1
print(count)
>>>>>>129

题目4:

一个完整的闭包必须满足哪几个条件:
1.函数中嵌套函数
2.外层函数返回内层嵌套函数名
3.内层嵌套函数有引用外层的一个非全局变量

题目5:

定义一个计算函数运用时间的装饰器(计算时间使用time模拟实现)

import time

import time

def wrapper(func):
    def count_time(*args, **kwargs):
        start_time = time.time()
        func(*args, **kwargs)
        end_time = time.time()
        print("{}函数运行的时间为:{:.5f}秒".format(func.__name__, end_time - start_time))
    return count_time

# 测试
@wrapper
def test(n):
    time.sleep(n)
    print("运行结束了")

test(2)
>>>>>>>>>>>>>>>>
运行结束了
test函数运行的时间为:2.00000

题目6:

编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次
后续的函数都无需再输入用户名和密码。{"user":"python01","pwd":"123456","token":False}

with open('ceshi.txt')as f:
    users =eval(f.read())
    
def login_check(func):
    '''
    登录验证的装饰器
    :param func:
    :return:
    '''
    def ado():
        if not users['token']:
            print('----登录页面-------')
            username =input('账号:')
            password =input('密码:')
            # 登录校验
            if users['user']==username and users['pwd' ]==password:
                users['token' ] =True  # 修改token值
                func()
        else:
            func()
    return ado

@login_check
def index():
    print('这是index首页')

@login_check
def page1():
    print('这个是page1页面')

@login_check
def page2():
    print('这个是page2页面')

if __name__=='__main__':
    index()
    page1()
    page2()

>>>>>>>>
----登录页面-------
账号:python01
密码:123456
这个是page1页面
这个是page2页面

题目7:

通过装饰器实现单例模式,只要任意一个类使用该装饰器装饰,那么就会变成单例模式的类。

def single(func):
    instance={}
    def fun(*args,**kwargs):
        if func in instance:
            return instance[func]
        else:
            instance[func]=func(*args,**kwargs)
            return instance[func]
    return fun

@single
class Test:
    a=1
    def __init__(self,x=2):
        self.x=x

one=Test()
two=Test()
print(one)
print(two)
print(one is two)
one.b='love'
print(two.b)

>>>>>>>>>>>
<__main__.Test object at 0x0000000002208518>
<__main__.Test object at 0x0000000002208518>
True
love

题目8:

通过类实现一个通用的装饰器,既可以装饰函数 也可以装饰类,既可以装饰有参数又可以
装饰无参数

class Decorator:

    def __init__(self,func):
        self.func=func

    def __call__(self, *args, **kwargs):
        self.func()
        print('装饰器的功能')

@Decorator   #test_01=Decorator(test_01)
def test_01():
    print('----原来的功能----')

test_01()  #这是一个被调用的对象

>>>>
----1原来的功能----
2装饰器的功能

题目9:

请描述__new__、__repe__ 、__str__、__call__分别在什么情况下会被触发!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值