zoukankan      html  css  js  c++  java
  • 🍖random 模块

    引入

    1.什么是 random 模块

    • random 模块是 Python的内置模块
    • random 主要用来生成随机数

    random 模块常见用法

    1.random( )

    • 只能生成大于 0 且小于 1 之间的小数 (float类型)
    import random
    
    print(random.random())  # 0.9449282236205908
    print(random.random())  # 0.297501908739908
    

    2.uniform( )

    • 生成指定数值之间的小数 (float)
    import random
    
    print(random.uniform(2,5))  # 3.641231407326168
    print(random.uniform(2,5))  # 3.0820775843719668
    

    3.randint( )

    • 生成指定数值之间的整数 (int类型)
    import random
    
    ⛅生成大于等于 2 且小于等于 5 之间的整数
    print(random.randint(2,5))  # 4
    print(random.randint(2,5))  # 2
    print(random.randint(2,5))  # 5
    

    4.randrange( )

    • 生成指定数值之间的整数 (顾头不顾尾)
    import random
    
    ⛅生成大于等于 2 且小于 5 之间的整数
    print(random.randrange(2,5))  # 3
    print(random.randrange(2,5))  # 2
    print(random.randrange(2,5))  # 3
    

    5.choice( )

    • 从你指定的列表里面随机取出一个值
    import random
    
    res = random.choice([1,'23',[4,5]])
    print(res,type(res))
    '''多次输出后的结果
    23     <class 'str'>
    1      <class 'int'>
    [4, 5] <class 'list'>
    '''
    

    6.sample( )

    • 从你指定的列表里面随机取出你指定个数的元素组合
    import random
    
    res = random.sample([1,2,3,'23',[4,5]],2)  # 从列表里随机取出 2 个元素组合
    print(res,type(res))  # [3, 2] <class 'list'>  (存放在一个列表里)
    
    res = random.sample([1,2,3,'23',[4,5]],3)  # # 从列表里随机取出 3 个元素组合
    print(res,type(res))  # ['23', [4, 5], 2] <class 'list'>
    

    7.shuffle( )

    • 将列表里面元素的顺序打乱, 相当于洗牌 (只能传入列表)
    import random
    
    item = [1,2,3,4,5]
    random.shuffle(item)
    print(item)  # [4, 1, 3, 5, 2]
    

    随机生成码实现

    1.储蓄知识

    • 小写字母 a-z 对应的十进制是 97-122
    • 大写字母 A-Z 对应的十进制是 65-90
    • chr(num) : 将传入的一个十进制转换成对应的 ASCII 码表中的一个字符
    • ord('A-z') : 将传入的一个 ASCII 码中的一个字符转换成对应的十进制

    2.生成指定位数的验证码, 含大小写英文和数字

    import random
    
    def auth_code(count=6):
        res = ''
        for i in range(count):
            lower = chr(random.randint(97,122))  # 随机小写字母
            upper = chr(random.randint(65,90))   # 随机大写字母
            num = str(random.randint(0,9))       # 随机数字
            res2 = random.choice([lower,upper,num])  # 三者之间随机取走一个
            res += res2  # 字符拼接
        return res
    
    print(auth_code(6))  # Fr58Vg
    print(auth_code(6))  # v0IOY8
    print(auth_code(6))  # I9Z2gf
    print(auth_code(6))  # J9128t
    

    3.优化版本

    • 上一个版本是字符拼接, 会重复新建内存空间, 造成一定的资源占用
    • 优化版本使用列表来接收值, 内存空间不重复申请, 再使用 join 将列表拼成字符串
    import random
    
    def auth_code(count=6):
        l = []
        for i in range(count):
            lower = chr(random.randint(97, 122))
            upper = chr(random.randint(65,90))
            num = str(random.randint(0,9))
            res2 = random.choice([lower,upper,num])
            l.append(res2)
        return "".join(l)
    
    print(auth_code())  # MSlAum
    print(auth_code())  # J954pz
    print(auth_code())  # Y9z9Mz
    print(auth_code())  # 5QQJo4
    
  • 相关阅读:
    C#前端画表
    JavaScript中遍历获取Json中属性值
    【数据库】Redis(5)--Redis发布订阅
    【java框架】SpringBoot(9) -- Springboot中如何优雅的进行字段校验
    【开发工具】-- IDEA集成Git在实际项目中的运用
    【Java代码之美】 -- Java必会的工具库,减少代码量的利器
    【java框架】SpringMVC(4) -- JSON相关的数据返回
    聊聊基于jdk实现的spi如何与spring整合实现依赖注入
    聊聊springcloud项目同时存在多个注册中心客户端采坑记
    feign请求返回值反序列LocalDateTime异常记录
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14157600.html
Copyright © 2011-2022 走看看