023.Python的随机模块,,一 random 随


一 random 随机模块

1.1 获取随机0-1之间的小数(左闭右开) 0<= x < 1

import randomres = random.random()print(res)

执行

[root@node10 python]# python3 test.py0.1808803715859979[root@node10 python]# python3 test.py0.39177193259061716

1.2 randrange()

随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值)

import randomres = random.randrange(3)  # 0~2print(res)res = random.randrange(1,10) # 1~9print(res)res = random.randrange(1,10,3) # 1 4 7print(res)

执行

[root@node10 python]# python3 test.py197

1.3 randint()

随机产生指定范围内的随机整数 (目前唯一可以取到最大值的函数,不推荐使用)

import random
res = random.randint(2,5) # 2 3 4 5 最大值可以取到print(res)

执行

[root@node10 python]# python3 test.py5[root@node10 python]# python3 test.py4

randint 必须给2个参数 1个或者3个都不行,功能有局限性,不推荐使用

import randomres = random.randint(2,5,2)print(res)

执行

技术图片

1.4 uniform()

获取指定范围内的随机小数(左闭右开)

import randomres = random.uniform(1,10) # 1<= x < 10print(res)res = random.uniform(5,-3)print(res)

执行

[root@node10 python]# python3 test.py6.236326270460472-1.5051738051095427[root@node10 python]# python3 test.py5.5759052005485844.156048569051353[root@node10 python]# python3 test.py1.95499440917572194.605001284532852

1.5 choice()

随机获取序列中的值(多选一)

import randomlistvar = [1,2,3,90,6,5]res = random.choice(listvar)print(res)

执行

[root@node10 python]# python3 test.py1[root@node10 python]# python3 test.py3[root@node10 python]# python3 test.py90[roo

自定义函数 实现choice的效果

import randomlistvar = [1,2,3,90,6,5]def mychoice():        length = len(listvar)        res = random.randrange(0,length) # 0 ~ 5        return  listvar[res]print(mychoice())

执行

[root@node10 python]# python3 test.py6[root@node10 python]# python3 test.py90[root@node10 python]# python3 test.py3

1.6 sample()

随机获取序列中的值(多选多) [返回列表]

sample(容器类型数据,选几个)

import randomlistvar = ["周杰伦","李宇春","王宝强","宋小宝","刘德华","张学友","王文"]res = random.sample(listvar,2)print(res)

执行

[root@node10 python]# python3 test.py[‘王文‘, ‘张学友‘][root@node10 python]# python3 test.py[‘刘德华‘, ‘张学友‘]

1.7 shuffle()

随机打乱序列中的值(直接打乱原序列)

import random
listvar = ["周杰伦","李宇春","王宝强","宋小宝","刘德华","张学友","王文"]random.shuffle(listvar)print(listvar)

执行

[‘王文‘, ‘王宝强‘, ‘宋小宝‘, ‘周杰伦‘, ‘张学友‘, ‘刘德华‘, ‘李宇春‘][root@node10 python]# python3 test.py[‘张学友‘, ‘周杰伦‘, ‘王宝强‘, ‘王文‘, ‘宋小宝‘, ‘李宇春‘, ‘刘德华‘][root@node10 python]# python3 test.py[‘李宇春‘, ‘刘德华‘, ‘王宝强‘, ‘王文‘, ‘周杰伦‘, ‘张学友‘, ‘宋小宝‘]

1.8 生成验证码

实现一个验证码功能,每次随机产生5个字符

import randomdef yanzhengma():        strvar = ‘‘        for i in range(5):                # res = chr(97)                # a-z 范围的小写字母                a_z = chr(random.randrange(97,123))                # A-Z 产生所有的大写字母 65 => A  90                A_Z = chr(random.randrange(65,91))                # 0-9 产生0-9 10个数字                num  = str(random.randrange(0,10)) # 为了实现字符串的拼接                # 把范围的可能出现的字符放到同一的列表中进行随机挑选                listvar = [a_z,A_Z,num]                # 把选好的5个随机字符 通过+来形成拼接                strvar += random.choice(listvar)        # 直接返回该字符串        return strvarres = yanzhengma()print(res)

执行

[root@node10 python]# python3 test.py171ZV[root@node10 python]# python3 test.pyUYj8P[root@node10 python]# python3 test.pyJkNev[root@node10 python]# python3 test.pyKCEY8[root@node10 python]# python3 test.pyYMa30

二 Time时间模块

2.1 time()

获取本地时间戳

import timeres = time.time()print(res)

执行

[root@node10 python]# python3 test.py1574685161.550896

2.2 mktime()

通过[时间元组]获取[时间戳] (参数是时间元组)

import timettl = (2019,5,12,15,21,0,0,0,0)res = time.mktime(ttl)print(res)

执行

[root@node10 python]# python3 test.py1557692460.0

2.3 localtime()

通过[时间戳]获取[时间元组] (默认当前时间)

import timettl = time.localtime()  # 默认使用当前时间戳print(ttl)ttl = time.localtime(1557645000) # 自定义时间戳,转化为时间元组print(ttl)

执行

[root@node10 python]# python3 test.pytime.struct_time(tm_year=2019, 
tm_mon=11,
tm_mday=25,
tm_hour=7,
tm_min=36,
tm_sec=43,
tm_wday=0,
tm_yday=329,
tm_isdst=0)time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12, tm_hour=3, tm_min=10, tm_sec=0, tm_wday=6, tm_yday=132, tm_isdst=1)

2.4 ctime()

通过[时间戳]获取[时间字符串] (默认当前时间)

import timeres = time.ctime()  # 默认使用当前时间戳print(res)res = time.ctime(1557645000) # 可以手动自定义时间戳print(res)

执行

[root@node10 python]# python3 test.pyMon Nov 25 07:38:28 2019Sun May 12 03:10:00 2019

2.5 asctime()

通过[时间元组]获取[时间字符串](参数是时间元组)

import timettl = (2019,5,12,15,21,0,1,0,0)res = time.asctime(ttl)print(res)

执行

[root@node10 python]# python3 test.pyTue May 12 15:21:00 2019

优化版

import timettl = (2019,5,12,15,21,0,4,0,0)res = time.mktime(ttl)print(time.ctime(res))

执行

[root@node10 python]# python3 test.pySun May 12 16:21:00 2019

2.6 strftime()

通过[时间元组]格式化[时间字符串] (格式化字符串,[可选时间元组参数])

import timeres = time.strftime("%Y-%m-%d %H:%M:%S") # 默认以当前时间戳转化为字符串print(res)# linux当中 strftime可以识别中文,windows不行res = time.strftime("%Y-%m-%d %H:%M:%S",(2008,8,8,8,8,8,0,0,0))print(res)

执行

[root@node10 python]# python3 test.py2019-11-25 07:42:202008-08-08 08:08:08

2.7 strptime()

通过[时间字符串]提取出[时间元组] (时间字符串,格式化字符串)

注意:左右两侧的字符串要严丝合缝,有多余的空格都不行,然后按照次序,依次通过格式化占位符,提取时间

import timeres = time.strptime("2019年3月8号15点21分30秒,发射了人造卫星嫦娥"  ,  "%Y年%m月%d号%H点%M分%S秒,发射了人造卫星嫦娥")print(res)

执行

[root@node10 python]# python3 test.pytime.struct_time
(tm_year=2019,
tm_mon=3,
tm_mday=8,
tm_hour=15,
tm_min=21,
tm_sec=30,
tm_wday=4,
tm_yday=67,
tm_isdst=-1)

2.8 perf_counter()

用于计算程序运行的时间

import timestartime = time.perf_counter()print(startime)for i in range(1000000000):        passendtime = time.perf_counter()# 结束时间  - 开始时间[ time.time()] 也可以实现;res = endtime - startimeprint(res)

执行

[root@node10 python]# python3 test.py252269.75615360844.59376426698873

023.Python的随机模块

评论关闭