zoukankan      html  css  js  c++  java
  • 第十五天(内置函数)

    第十五天(内置函数)

    import datetime

    # 获取当前年月日
    # print(datetime.date.today())

    # 获取当前年月日时分秒
    # print(datetime.datetime.today())
    # l1 = datetime.datetime.today()
    # print(type(time_obj))
    # print(time_obj.year)
    # print(time_obj.month)
    # print(time_obj.day)

    # 从索引0开始计算周一
    # UTC
    # print(l1.weekday()) # 0-6
    # ISO
    # print(l1.isoweekday()) # 1-7
    # 北京时间
    # print(datetime.datetime.now())
    # 格林威治
    # print(datetime.datetime.utcnow())

    '''
    日期/时间的计算 (*******)
      日期时间 = 日期时间 “+” or “-” 时间对象
      时间对象 = 日期时间 “+” or “-” 日期时间
    '''
    # 日期时间:
    # s1 = datetime.datetime.now()
    # print(s1)
    # 获取七天时间
    # l1 = datetime.timedelta(days=7)
    # print(l1)

    # 获取当前七天的时间
    # 日期时间 = 日期时间‘+’ or ‘-’ 时间对象
    # l2 = s1 + l1
    # print(l2)


    import random

    # 随机获取1- 9中任意的整数
    # l1 = random.randint(1, 9)
    # print(l1)

    # 默认获取0-1中间任意小数
    # l2 = random.random()
    # print(l2)

    # 打乱顺序
    # l3 = ['wanglu','zhaoqiao','yinglili','jinyi']
    # random.shuffle(l3)
    # print(l3)

    # 随机获取可迭代对象中的某个值
    # l4 = ['a', 'b', 'c', 'd', 'e']
    # s2 = random.choice(l4)
    # print(s2)


    '''
    随机验证码需求:
      大小写字母、数字组合而成
      组合5位数的随机验证码
       
    前置技术:
      chr() 可以将ASCII表中值转换成对应的字符
      random.choice
    '''

    # 获取任意长度的随机验证码
    # def get_code(n):
    #     code = ''
    #     # 每次循环只从大小写字母、数字中取出一个字符
    #     for i in range(n):
    #         # 随机获取一个小写字母
    #         r1 = random.randint(97, 122)
    #         s1 = chr(r1)
    #
    #         # 随机获取一个大写字母
    #         r2 = random.randint(65, 90)
    #         s2 = chr(r2)
    #
    #         # 随机获取一个数字
    #         r3 = str(random.randint(0, 9))
    #
    #         code_list = [s1, s2, r3]
    #
    #         random_code = random.choice(code_list)
    #
    #         code += random_code
    #
    #     return code
    #
    # code = get_code(5)
    # print(code)




    '''
    os与操作系统交互的模块
    '''
    import os

    # 获取当前项目根目录

    # 获取当前文件中的上一级目录
    # LIANXI = os.path.dirname(__file__)
    # print(LIANXI)

    # 项目的根目录,路径相关的值都用'常量'
    # DAY15 = os.path.dirname(LIANXI)
    # print(DAY15)

    # 路径拼接:拼接文件‘结对路径’
    # FOO = os.path.join(LIANXI, '二次元.txt')
    # print(FOO)

    # 判断'文件/文件夹'是否存在:返回布尔值
    # print(os.path.exists(FOO))   # False
    # print(os.path.exists(LIANXI))   # True


    # 判断'文件夹'是否存在
    # print(os.path.isdir(FOO)) # False
    # print(os.path.isdir(LIANXI)) # True

    # 创建文件夹
    # CHUANG_JIAN = os.path.join(LIANXI, '三次元')
    # os.mkdir(CHUANG_JIAN)

    # 删除文件夹
    # coo1 = os.listdir()
    # print(coo1)

    # 让用户选择文件
    # s1 = os.listdir(r'D:python上海正式课课后随笔15day15二次元')
    # # print(s1)
    # while True:
    #     # 1、打印二次元老婆
    #     for index, name in enumerate(s1):
    #         print(f'编号:{index} 文件名:{name}')
    #
    #     choice = input('选择你的真爱--->(三笠天下第一) 编号: ').strip()
    #     # 限制用户必须输入数字,数字的范围必须在编号内
    #     # 不符合,重新输入
    #     if not choice.isdigit():
    #         print('老婆序号')
    #         continue
    #
    #     # 正确,继续执行
    #     choice = int(choice)
    #
    #     # 判断超出范围,重新输出
    #     if choice not in range(len(s1)):
    #         print('不要太贪心了')
    #         continue
    #
    #     s2 = s1[choice]
    #
    #     s3 = os.path.join(r'D:python上海正式课课后随笔15day15二次元', s2)
    #     print(s3)
    #
    #     with open(s3, 'r', encoding='utf-8')as f:
    #         print(f.read())


    '''
    hashlib是一个加密模块:
      内置了很对算法:
      MD5(*******):不可解的算法(2018年以前)
    '''
    import hashlib

    def pwd_md5(pwd):  #
       md5_obj = hashlib.md5()
       # print(type(md5_obj))
       str1 = pwd  # '1234'
       # update中一定要传入bytes类型数据
       md5_obj.update(str1.encode('utf-8'))

       # 创造盐
       sal = '坦克怎么这么帅啊!'
       # 加盐
       md5_obj.update(sal.encode('utf-8'))

       # 得到一个加密后的字符串
       res = md5_obj.hexdigest()
       # eb1ca06cf5940e9fb6ef39100ec72c94
       return res

    # user_str1 = f'tank:1234'
    #
    # user_str2 = f'tank:{res}'

    # with open('user.txt', 'w', encoding='utf-8') as f:
    #     f.write(user_str2)

    # 模拟用户登陆操作

    # 获取文件中的用户名与密码
    with open('user.txt', 'r', encoding='utf-8') as f:
       user_str = f.read()

    file_user, file_pwd = user_str.split(':')

    # 用户输入用户名与密码
    username = input('请输入用户名:').strip()
    password = input('请输入密码:').strip()  # 1234

    # 校验用户名与密码是否一致
    if username == file_user and file_pwd == pwd_md5(password):  # pwd_md5('1234')
       print('登陆成功')
    else:
       print('登陆失败')

     

  • 相关阅读:
    并发编程学习笔记(15)----Executor框架的使用
    并发编程学习笔记(14)----ThreadPoolExecutor(线程池)的使用及原理
    并发编程学习笔记(13)----ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)原理
    并发编程学习笔记(12)----Fork/Join框架
    并发编程学习笔记(11)----FutureTask的使用及实现
    并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理
    设计模式:代理模式
    设计模式:装饰模式
    设计模式:几大原则
    设计模式:策略模式(Strategy)
  • 原文地址:https://www.cnblogs.com/zhangjinyi97/p/11884650.html
Copyright © 2011-2022 走看看