python之random模块
发布日期:2021-05-04 19:07:29 浏览次数:27 分类:原创文章

本文共 2553 字,大约阅读时间需要 8 分钟。

python之random模块

文章目录

引入

什么是 random 模块

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

一、random 模块七种基本用法介绍

1.random( )

  • 只能生成大于 0 且小于 1 之间的小数 (float类型)

    import randomprint(random.random())  # 0.445551017368668print(random.random())  # 0.09191193089709782

2.uniform( )

  • 生成指定数值之间的小数 (float)
#由random.random()的扩展因为其不能指定参数。而random.uniform(1, 3)指定了一到三之间的浮点数, (注意: 返回浮点数。不包括一和三)import randomprint(random.uniform(1,3))  # 1.8079224989194222print(random.uniform(1,3))  # 2.2382904648981112

3.randint( )

  • 生成指定数值之间的整数 (int类型)
import random# 生成大于等于 2 且小于等于 5 之间的整数 (包括2,包括5, 表示的是开区间)print(random.randint(2,5))  # 3print(random.randint(2,5))  # 2print(random.randint(2,5))  # 3

4.randrange( )

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

5.choice( )

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

6.sample( )

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

7.shuffle( )

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

二、随机生成验证码

1.储备知识

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

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

import randomdef 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 resprint(auth_code(6))  # tmvp60print(auth_code(6))  # Bl7h51print(auth_code(6))  # Y9xa33print(auth_code(6))  # 787zR3

3.优化版本

  • 上一个版本是字符拼接, 会重复新建内存空间, 造成一定的资源占用
  • 优化版本使用列表来接收值, 内存空间不重复申请, 再使用 join 将列表拼成字符串
import randomdef 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())  # 6O22ylprint(auth_code())  # g24X4uprint(auth_code())  # 0V220Pprint(auth_code())  # 9sgnO8
上一篇:python之os模块
下一篇:python之time与datetime模块

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月26日 00时17分05秒