zoukankan      html  css  js  c++  java
  • Python random模块&string模块 day3

    一、random模块的使用:

    Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。

    1、常用函数:

    (1)random.random() 

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

    (2)random.uniform(a,b)

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

    (3)random.randint(a,b)

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

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

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

      random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。       

      random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。

    (5)random.choice(sequence)

      从序列中获取一个随机元素,。

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

      用于将一个列表中的元素打乱,洗牌

    (7)random.sample(sequence, k)

      从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列,返回的为一个list

    import random
    
    print( random.random() )             # 产生 0 到 1 之间的随机浮点数
    print( random.uniform(1.1,5.4) )     # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
    print( random.randint(1,10) )        # 产生 1 到 10 的一个整数型随机数  
    print( random.randrange(0,101,2) )   # 随机选取0到100间的偶数
    print( random.choice('tomorrow') )   # 从序列中随机选取一个元素
    print(random.sample('0123456',3))    #从序列中随机选取3个返回一个list
    a=[1,3,5,6,7]                        # 将序列a中的元素顺序打乱
    random.shuffle(a)
    print(a)

    2、举例:产生5个6位数的随机验证码

    #方法1:使用randint函数,可产生随机的整数
    # result = random.randint(100000,999999)#无法产生003212这样的验证码
    import random
    def sms_code():
        result = random.randint(1, 999999)#随机整数
        verify_code=str(result).zfill(6)#可以产生以0开头的六位验证码
        return verify_code
    
    for i in range(5):
        print(sms_code())
    #方法2:使用sample函数,随机取几个,返回的是一个list
    import random
    def verify_code():
        random_list = random.sample('0123456789', 6)
        result = ''.join(random_list)
        return result
    for i in range(5):
        print(verify_code())

     二、string模块的使用:

    import string #数字模块
    print(string.digits)#所有的整数
    print(string.ascii_lowercase)#小写字母
    print(string.ascii_uppercase)#大写字母
    print(string.ascii_letters)#大写字母+小写字母
    print(string.punctuation)#所有的特殊字符
    print(random.choice(string.digits))#随机取一个数

     举例:

    1、产生一批用户名,长度在6-12之间,产生的这一批用户名不能重复,用户名需要以字母开头,可以包含字母和数字

    #分析:
    #1、循环,你传入的数字是多少,就产生多少条
    #2、随机产生一个6-12之间的数字当作长度
    #3、不能重复 就用集合
    #4、判断产生的用户名第一个元素是否不为整数
    import random
    import string
    
    def gen_username(num):
        all_username =set() #定义一个空集合,存所有的用户名
        while len(all_username) != num:
            length = random.randint(6,12) #随机产生长度
            temp = random.sample(string.digits+string.ascii_letters,length)#用户名
            username = ''.join(temp)
            if not username[0].isdigit():
              all_username.add(username)
        return list(all_username)
    
    usernames= gen_username(10)
    print(usernames)

    2、产生一批163邮箱,邮箱的用户名部分长度在6-12之间,产生的这一批用户名不能重复,用户名需要以字母开头,必须包含字母和数字,将结果写入文件中

    import random
    import string
    
    def op_file(file_name,content=None):
        if content: # 有content,写文件
            with open(file_name,'w',encoding='utf-8') as fw:
                fw.write(content)
        else:
            with open(file_name,encoding='utf-8') as fr:
                return fr.read()
    
    def gen_username(num):
        all_username =set() #定义一个空集合,存所有的用户名
        while len(all_username) != num:
            length = random.randint(6,12) #随机产生长度
            temp = random.sample(string.digits+string.ascii_letters,length)#用户名
            if set(temp) & set(string.digits) and set(temp) &set(string.ascii_letters) and not temp[0].isdigit():
                username = ''.join(temp)
                all_username.add(username + '@163.com' + '
    ')  # 加
    是为了写入文件里查看方便
        return list(all_username)
    
    usernames= gen_username(10)
    usernames_str = ''.join(usernames)
    op_file('usernames.txt',usernames_str)
  • 相关阅读:
    创业失败的七个原因及解决之道
    技术人员如何参与产品设计讨论:激活那一潭死水
    基于Android Studio搭建hello world工程
    WINCE6.0+IMX515通过cfimager.exe烧录镜像文件
    基于Android Studio搭建Android应用开发环境
    WinCE启动失败的原因与解决办法分析
    Maximum Allowed Error 7 错误解决
    s3c6410 开发板Linux系统支持 K9GAG08U0E的方法
    Nandflash 驱动移植
    GIFT-EMS礼记----青软S2SH(笔记)
  • 原文地址:https://www.cnblogs.com/candysalty/p/10993064.html
Copyright © 2011-2022 走看看