• day5模块学习--random模块


    Python中的random模块用于生成随机数

    下面具体介绍random模块的功能:

        1.random.random()

        #用于生成一个0到1的浮点数   随机浮点数:0<= n < 1.0

        >>> import random
      >>> random.random()
      0.10014889182317255
      >>> random.random()
      0.9318386759483899
      >>> random.random()
      0.7933067981427825


        2.random.uniform(a,b)

        #用于生成一个指定范围内的随机浮点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成随机数n:a <= n <= b。如果a < b,则b <= n <= a。

        >>> random.uniform(1,4)
      3.1024302829110297
      >>> random.uniform(4,1)
      3.604505878728916
      >>> random.uniform(2,3)
      2.987738694261377
      >>> random.uniform(3,3)
      3.0

        3.random.randint(a, b)

        #用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n:a <= n <= b

        >>> random.randint(1,3)
      2
      >>> random.randint(3,3)
      3

        4.random.randrange([start], stop[, step])

        #从指定范围内,按指定基数递增的集合中,获取一个随机数

        random.randrange(10,30,2),结果相当于从[10,12,14,16,...,28]序列中获取一个随机数。random.randrange(10,30,2)在结果上与random.choice(range(10,30,2)等效。

        一直以为random.randrange()与random.randint()功能类似,只是randint()包含下限,而random.randrange()不包含下限,原来random.randrange()可以指定步长,说明这是一个区域其实,random.randint()在上下限随机去一个值,random.randrange()是在数列中随机去一个数。

        >>> random.randrange(2,10,3)
      5
      >>> random.randrange(2,10)
      3
      >>> random.randrange(2,10,3)
      8

        5.random.choice(sequence)

        #参数sequence表示一个有序类型。从序列中获取一个随机元素,sequence在Python不是一种特定的类型,而是泛指一系列类型。list,tuple,字符串(str)都属于sequence。

        random.chocice是从sequence中随机取一个元素,如列表,字符串,元组中随机取一个元素。

        >>> name = "alexssb"
      >>> names = ("alex","250","is")
      >>> x = list(range(2,8))
      >>> random.choice(name)     #从字符串中取值
      'a'
      >>> random.choice(names)    #从元组中随机提取元素
      'alex'
      >>> random.choice(names)   
      'is'
      >>> random.choice(x)         #从列表中随机提取元素
      4

        6.random.shuffle(x[, random])

        #用于将一个列表中的元素打乱,即将列表内的元素随机排列。

        >>> random.shuffle(x)
      >>> x
      [3, 4, 7, 5, 6, 2]

        random.shuffle(list)用于将列表里面的元素随机打乱。

        7.random.sample(sequence, k)

        #从指定序列中随机获取指定长度的片断并随机排列。sample函数不会修改原有序列。

        >>> names = ["alex","tenglan","chunyun","geng","aoi","cang"]
      >>> random.sample(names,4)
      ['chunyun', 'alex', 'geng', 'aoi']
      >>> names
      ['alex', 'tenglan', 'chunyun', 'geng', 'aoi', 'cang']

        random.sample(sequence,k)从列表中随机获取一个元素

        下面现在用random模块来写一个随机验证码。我们知道,随机验证码有大小写字母组成。也包含数字。下面来看看如何生成一个随机验证码。

    import random
    
    def verification_code():
        '''生成一个随机验证码'''
        lists = list(range(65,91))
        code = ""
        '''大写字母对应的数字编码'''
        '''定义一个空的列表,用于存放大小写字母对应的值'''
        for num in range(97,123):
            '''小写字母对应的数字编码,凭借到一块'''
            lists.append(num)
    
        for i in range(6):
            random_num = random.randint(1,6)       #随机值,当随机值与循环值相等的时候是字母,不相等的时候是数字,这样就生成了字母加数字的随机验证码
            if i == random_num:
                string = chr(random.choice(lists))
            else:
                string = str(random.randint(0,9))
            code += string
    
        return code
    
    x = verification_code()
    print(x)

        上面代码生成一个6位数的随机验证码。

        也可以生成一个随机验证码,让每次里面都包含数字和字母。如下:

       

    import random
    
    def verification_code():
        '''生成一个随机验证码'''
        '''生成一个65-90,97-122的序列'''
        numbers = list(range(65,123))
        for num in range(91,97):
            numbers.remove(num)
    
        '''把序列进行打乱'''
        random.shuffle(numbers)
        random_strs = random.sample(numbers,2)
        '''生成两个随机数'''
        random_nums = []
        '''存放随机验证码'''
        for random_str in random_strs:
            random_nums.append(chr(random_str))
        for random_num in range(0,2):
            random_nums.append(str(random.randint(1,9)))
    
        code = "".join(random_nums)
    
        return code
    
    x_code = verification_code()
    print(x_code)

        上面代码生成一个随机验证码,每次都包含字母,不会只有数字或者之后字母的情况发生。

  • 相关阅读:
    2nd
    C#连接Sqlite 出现:混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。的解决方案
    后端项目与钉钉接口(第三方)对接要注意的问题
    springboot的第一节课
    - Missing artifact com.jate.fk.base:fk-base-service:jar:1.0.1
    Android框架模式
    函数的定义与调用
    kotlin基础
    观察者模式
    实现单例的六种方式
  • 原文地址:https://www.cnblogs.com/gengcx/p/7215281.html
Copyright © 2020-2023  润新知