5.2 random 返回随机生成的一个实数

  • random.randint() 返回随机生成的一个实数

    import random   #调用模块

    def get_random_code(length=6):#变量为6
       data = []
       for i in range(length):#循环6次
           v = random.randint(65,90)#生成65-90之间随机数字
           data.append(chr(v))#将v变为字符追加到data列表中

       return  ''.join(data)#将列表中元素链接,变为空字符串

    code = get_random_code()
    print(code)#6位随机字符
  • random.choice 从序列中随机抽选一个函数 验证码,抽奖

    import random
    print(random.choice([1,2,3,4,5]))
  • random.sample 一个奖项多个人

    import random
    print(random.sample([1,2,3,4],3)) # [3, 2, 4]
  • random.uniform 随机小数

    import random
    print(random.uniform(1,5)) # 3.599380534928744
  • random.shuffle 将序列顺序打乱 洗牌

  • random.random()生成0和1之间的随机浮点数float

5.3 hashlib 摘要算法模块 Hmac算法

  • 加密模块。md5/sha

    import hashlib
    md5 = hashlib.sha1('盐'.encode())
    md5.update(b'str')
    print(md5.hexdigest())
    • 两个文件的md5值是相同的

      import hashlib

      md5 = hashlib.md5()
      #md5.update('hello'.encode())
      #md5.update('wusir'.encode())
      md5.update('hello,wusir'.encode())
      # 46879507bf541e351209c0cd56ac160e
      46879507bf541e351209c0cd56ac160e
      print(md5.hexdigest())
    # 将指定的 “字符串” 进行加密
     import hashlib

    def get_md5(data):
    obj = hashlib.md5()#md5对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来,如果没有参数,所以md5遵守一个规则,生成同一个对应关系,
    #如果加了参数,就是在原先加密的基础上再加密一层,这样的话参数只有自己知道,防止被撞库。
    obj.update(data.encode('utf-8'))#要对哪个字符串进行加密,就放这里
    result = obj.hexdigest()#拿到加密字符串
    return result# 返回加密字符串

    val = get_md5('')
    print(val)
     
    # 应用,用户登录
    import hashlib
    USER_LIST = []
    def get_md5(data):
    obj = hashlib.md5("12:;4436ff123ad".encode('utf-8'))
    obj.update(data.encode('utf-8'))
    result = obj.hexdigest()
    return result

    def register():
    print('**************用户注册**************')#提示
    while True:#循环注册
    user = input('请输入用户名:')#输入
    if user == 'N':#判断输入是否为N
    return #结束循环、函数
    pwd = input('请输入密码:')#输入密码
    temp = {'username':user,'password':get_md5(pwd)}#用户名和密码通过加密放在字典里
    USER_LIST.append(temp)#将字典追加到列表里

    def login():
    print('**************用户登陆**************')#提示
    user = input('请输入用户名:')#输入
    pwd = input('请输入密码:')

    for item in USER_LIST:#循环列表里的字典
    if item['username'] == user and item['password'] == get_md5(pwd):#比较输入的内容与字典里是否一样
    return True

    register()
    result = login()
    if result:#判断返回值是否为真
    print('登陆成功')
    else:
    print('登陆失败')
     
  • hmac输出的长度和原始哈希算法的长度一致。需要注意传入的key和message都是bytes类型,str类型需要首先编码为bytes

    import hmac
    message = b'Hello world'
    key = b'secret'
    h = hmac.new(key,message,digestmod='MD5')
    print(h.hexdigest())

5.4 time /datetime 时间模块

  • time.time() 时间戳

    import time 

    v = time.time() # 时间戳:1970-1-1 00:00
  • time.timezone 当前时区与时间戳相差的秒数

    import time
    print(time.timezone) # -28800
  • time.sleep(2) 睡2秒

  • datetime.now() 当前本地时间

    from datetime import datetime
    v1 = datetime.now()
    print(v1) # 2019-04-18 17:52:33.046206
  • timezone(timedelta(hours=7)) 获取东7区时间

    from datetime import datetime,timezone,timedelta

    tz = timezone(timedelta(hours=7)) # 当前东7区时间
    v2 = datetime.now(tz)
  • datetime.utcnow() 当前UTC时间

    from datetime import datetime,timezone,timedelta

    v3 = datetime.utcnow() # 当前UTC时间
    print(v3)
  • strftime 把datetime格式转换成字符串

    from datetime import datetime,timezone,timedelta

    v1 = datetime.now()
    print(v1,type(v1))
    val = v1.strftime("%Y-%m-%d %H:%M:%S")
    print(val)
  • strptime 字符串转成datetime

    from datetime import datetime,timezone,timedelta

    v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
    print(v1,type(v1))
  • timedelta datetime时间的加减

    from datetime import datetime,timezone,timedelta

    v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
    v2 = v1 - timedelta(days=140)
    date = v2.strftime('%Y-%m-%d')
    print(date)
  • 时间戳和datetime关系

    import time
    from datetime import datetime,timezone,timedelta

    ctime = time.time()
    print(ctime)
    v1 = datetime.fromtimestamp(ctime)
    print(v1)

    v1 = datetime.now()
    val = v1.timestamp()
    print(val)

第五章 模块之random 、hashlib、time /datetime的更多相关文章

  1. Python学习系列----第五章 模块

    5.1 如何引入模块 在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入.在调用math模块中的函数时,必须这样引用: ...

  2. 第五章 模块之 shtil 、 json / pickle、importlib、collections

    5.8 shtil 高级的 文件.文件夹.压缩包 处理模块 shutil.rmtree 删除目录 import shutilshutil.rmtree(path) shutil.move 重命名:移动 ...

  3. 第五章 模块之 getpass、sys、os

    5.5 getpass 密码不显示(只能在终端运行) 密码不显示(只能在终端运行) import getpass​pwd = getpass.getpass('请输入密码:')if pwd == '1 ...

  4. 第五章 模块之 logging、copy、re

    5.12 logging 日志模块 报警等级 CRITICAL = 50 # 最高FATAL = CRITICALERROR = 40WARNING = 30WARN = WARNINGINFO = ...

  5. 第五章 模块之 struct、dis、正则表达式、异常处理

    5.15 struct模块 pack 能够把所有的数字都固定的转换成4字节 5.16 dis dis.dis 查看计算机指令 5.16 正则表达式 基础 正则表达式概念: 是一种规则(元字符,量词) ...

  6. Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  7. 简学Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  8. Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)

    本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...

  9. Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块

    一.前提介绍: 可以开辟作用域的只有类,函数,和模块            for循环 if,else: 不能开辟自己的作用域 避免程序复用和重复调用,将这些写到一个.py文件中,做成一个模块,进行调 ...

随机推荐

  1. Java逻辑分页代码

    前台jsp代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...

  2. Type-C转接头 还是别用了,影响速率啊

      今天用Type-C转接USB头传照片真慢! 在数码配件领域,越是不起眼的小外设,隐藏其背后的猫腻和水分也就越多.就拿常见的Micro USB转USB Type-C转接头和TF转SD卡套而言,你觉得 ...

  3. k8s 集群部署--学习

    kubernetes是google开源的容器集群管理系统,提供应用部署.维护.扩展机制等功能,利用kubernetes能方便管理跨集群运行容器化的应用,简称:k8s(k与s之间有8个字母) Pod:若 ...

  4. Java开发手册-编程规约精选

    # Java开发手册-编程规约精选 ## 总约 - 采用驼峰写法 ## 变量 - 首字母小写 ## 方法 - 方法名首字母小写- 参数首字母小写 ## 引用 - <阿里巴巴Java开发手册> ...

  5. MySQL 正则(Regular Expression) 邮箱(Email)

    MySQL 正则表达式 | 菜鸟教程https://www.runoob.com/mysql/mysql-regexp.html (1条消息)常用正则表达式—邮箱(Email) - Samuel - ...

  6. (E2E_L2)包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解【正确的目录添加方法】

    VS项目中的包含目录.库目录.附加包含目录.附加库目录.附加依赖项均在"项目->属性->配置属性"下进行配置 一.具体说明如下: 1.VC++目录:     包含目录: ...

  7. leetcode 611. Valid Triangle Number 、259. 3Sum Smaller(lintcode 918. 3Sum Smaller)

    这两个题几乎一样,只是说611. Valid Triangle Number满足大于条件,259. 3Sum Smaller满足小于条件,两者都是先排序,然后用双指针的方式. 611. Valid T ...

  8. 贪心:leetcode 870. Advantage Shuffle、134. Gas Station、452. Minimum Number of Arrows to Burst Balloons、316. Remove Duplicate Letters

    870. Advantage Shuffle 思路:A数组的最大值大于B的最大值,就拿这个A跟B比较:如果不大于,就拿最小值跟B比较 A可以改变顺序,但B的顺序不能改变,只能通过容器来获得由大到小的顺 ...

  9. netty5拆包问题解决实例

    基于之前的例子(参见netty5自定义私有协议实例),我们修改下客户端handler,让发送的数据超过1024字节: NettyClientHandler: /** * 构造PCM请求消息体 * * ...

  10. Linux记录-批量安装LNMP(转载)

    #!/bin/bash # Describe: This is a one - button installation service script # 提示:使用此脚本时,尽量先选择第一项配置Yum ...