zoukankan      html  css  js  c++  java
  • 老男孩Python全栈开发(92天全)视频教程 自学笔记17

    day17课程内容:

      装饰器回顾练习 登录功能:

    #登录京东,不同的页面,选择页面,然后不同的登录方式

    with open('作业5.1jingdong','w',encoding='utf8') as f1,open('作业5.2weixin','w',encoding='utf8') as f2:
    jingdong={'username':'张三','pwd':'1234'}
    weixin={'username':'张三微信','pwd':'4321'}
    f1.write(str(jingdong))
    f2.write(str(weixin))

    # with open('作业5.1jingdong','w',encoding='utf8') as f1,
    # open('作业5.2weixin','w',encoding='utf8') as f2:

    def login(logintype='',flag=False):
    def logged(f):
    def hadlog(*x,**y):
    f(*x,**y)
    return hadlog
    def choice(f):
    def jd(*x,**y):
    with open('作业5.1jingdong', 'r', encoding='utf8') as f1:
    dic = eval(f1.read())
    username = dic['username']
    pwd = dic['pwd']
    while True:
    useid = input('请输入用户名:')
    usepwd = input('请输入密码:')
    if useid == username and usepwd == pwd:
    print('通过京东账号登录成功!')
    break
    else:
    print('用户名或密码错误,登陆失败!')
    flag = True
    f(*x,**y)
    def wx(*x,**y):
    with open('作业5.2weixin', 'r', encoding='utf8') as f1:
    dic = eval(f1.read())
    username = dic['username']
    pwd = dic['pwd']
    while True:
    useid = input('请输入用户名:')
    usepwd = input('请输入密码:')
    if useid == username and usepwd == pwd:
    print('通过微信登录成功!')
    break
    else:
    print('用户名或密码错误,登陆失败!')
    f(*x,**y)
    flag=True
    if logintype=='jd':
    return jd
    elif logintype=='wx':
    return wx
    else:
    pass #可增加其他登录方式
    if flag==True:
    return logged
    if flag==False:
    return choice

    @login('jd')
    def home():
    print('欢迎进入首页!')

    @login('wx')
    def finance():
    print('欢迎来到财经页面')

    @login('',True)
    def book():
    print('欢迎来到图书页面!')

    home()
    finance()
    book()
    # 请输入用户名:张三
    # 请输入密码:1234
    # 通过京东账号登录成功!
    # 欢迎进入首页!
    # 请输入用户名:张三微信
    # 请输入密码:4321
    # 通过微信登录成功!
    # 欢迎来到财经页面
    # 欢迎来到图书页面!

      生成器

    def f(n):
    return n*3
    a=[f(x) for x in range(10)] #列表生成式
    print(a) #[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

    a=(x*3 for x in range(5))
    #print(a) #<generator object <genexpr> at 0x0000000002125888> 生成器对象
    #for i in range(5):print(a.__next__()) #调用内部方法的方式不提倡
    print(next(a)) #next(a)等价于 a.__next__() ,在py2里等价于 a.next()
    #######生成器就是一个可迭代对象
    for i in a:
    print(i) #迭代出来了

    # 生成器有两种创建方式:
    # 1、a=(x*3 for x in range(5))
    #
    # 2、yield:
    def f():
    print('ok1')
    yield 1
    print('ok2')
    yield 2
    a=f()
    # next(a)
    # next(a)
    for i in a:
    print(i)
    # ok1
    # 1
    # ok2
    # 2

    def f():
    print('ok111')
    count=yield 1
    print(count)
    yield 2

    a=f()
    b1=a.send(None) #等价于next(a)
    b2=a.send('传值')
    print(b1,b2)
    # ok111
    # 传值
    # 1 2

    ############生成器都是迭代器,迭代器不一定是生成器 #list tuple dict,string:Interable(可迭代对象)

    #什么是迭代器?

    #满足两个条件:1、有iter方法 2、有next方法 迭代协议

      模块

    import time
    #print(time.time())
    #time.sleep(1)
    #print(time.gmtime())#英国世界标准时间 结构化格式 time.struct_time(tm_year=2017, tm_mon=11, tm_mday=29, tm_hour=7, tm_min=26, tm_sec=5, tm_wday=2, tm_yday=333, tm_isdst=0)
    print(time.ctime(time.time())) #将时间戳转为 格式输出
    print(time.localtime())#当地时间 结构化格式time.struct_time(tm_year=2017, tm_mon=11, tm_mday=29, tm_hour=15, tm_min=31, tm_sec=41, tm_wday=2, tm_yday=333, tm_isdst=0)
    print(time.mktime(time.localtime())) #将结构化格式时间转化为时间戳
    import datetime
    print(datetime.datetime.now()) # 2017-11-29 15:34:54.708226 ####很实用!
    import random
    print(random.random()) #生成0到1 的一个随机数 0.876389575379323
    print(random.randint(1,10)) #生成1到10的随机整数 包括1和10
    print(random.choice('hello'))#随机选取一个元素输出
    print(random.randrange(1,10))#生成1到10随机整数 包括1 不包括10 更加常用!

    ###########生成验证码
    #chr(65) ascii()码转化
    import random
    def f(a=5):
    cod=''
    for i in range(a):
    b = random.random()
    if b<0.5:
    cod+=str(random.randrange(1,10))
    else:
    cod+=chr(random.randrange(65,91))
    return cod

    print(f(6))

  • 相关阅读:
    746. 使用最小花费爬楼梯
    1283. 使结果不超过阈值的最小除数
    307. 区域和检索
    303. 区域和检索
    474. 一和零
    600. 不含连续1的非负整数
    命名规范【转】
    .NET中RabbitMq的使用
    C#中json字符串的序列化和反序列化
    c#发送post请求(带参数)
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/7921030.html
Copyright © 2011-2022 走看看