023.Python的随机模块和时间模块
一 random 随机模块
1.1 获取随机0-1之间的小数(左闭右开) 0<= x < 1
import random res = random.random() print(res)
执行
[root@node10 python]# python3 test.py 0.1808803715859979 [root@node10 python]# python3 test.py 0.39177193259061716
1.2 randrange()
随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值)
import random res = random.randrange(3) # 0~2 print(res) res = random.randrange(1,10) # 1~9 print(res) res = random.randrange(1,10,3) # 1 4 7 print(res)
执行
[root@node10 python]# python3 test.py 1 9 7
1.3 randint()
随机产生指定范围内的随机整数 (目前唯一可以取到最大值的函数,不推荐使用)
import random
res = random.randint(2,5) # 2 3 4 5 最大值可以取到 print(res)
执行
[root@node10 python]# python3 test.py 5 [root@node10 python]# python3 test.py 4
randint 必须给2个参数 1个或者3个都不行,功能有局限性,不推荐使用
import random res = random.randint(2,5,2) print(res)
执行
1.4 uniform()
获取指定范围内的随机小数(左闭右开)
import random res = random.uniform(1,10) # 1<= x < 10 print(res) res = random.uniform(5,-3) print(res)
执行
[root@node10 python]# python3 test.py 6.236326270460472 -1.5051738051095427 [root@node10 python]# python3 test.py 5.575905200548584 4.156048569051353 [root@node10 python]# python3 test.py 1.9549944091757219 4.605001284532852
1.5 choice()
随机获取序列中的值(多选一)
import random listvar = [1,2,3,90,6,5] res = random.choice(listvar) print(res)
执行
[root@node10 python]# python3 test.py 1 [root@node10 python]# python3 test.py 3 [root@node10 python]# python3 test.py 90 [roo
自定义函数 实现choice的效果
import random listvar = [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.py 6 [root@node10 python]# python3 test.py 90 [root@node10 python]# python3 test.py 3
1.6 sample()
随机获取序列中的值(多选多) [返回列表]
sample(容器类型数据,选几个)
import random listvar = ["周杰伦","李宇春","王宝强","宋小宝","刘德华","张学友","王文"] 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 random def 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 strvar res = yanzhengma() print(res)
执行
[root@node10 python]# python3 test.py 171ZV [root@node10 python]# python3 test.py UYj8P [root@node10 python]# python3 test.py JkNev [root@node10 python]# python3 test.py KCEY8 [root@node10 python]# python3 test.py YMa30
二 Time时间模块
2.1 time()
获取本地时间戳
import time res = time.time() print(res)
执行
[root@node10 python]# python3 test.py 1574685161.550896
2.2 mktime()
通过[时间元组]获取[时间戳] (参数是时间元组)
import time ttl = (2019,5,12,15,21,0,0,0,0) res = time.mktime(ttl) print(res)
执行
[root@node10 python]# python3 test.py 1557692460.0
2.3 localtime()
通过[时间戳]获取[时间元组] (默认当前时间)
import time ttl = time.localtime() # 默认使用当前时间戳 print(ttl) ttl = time.localtime(1557645000) # 自定义时间戳,转化为时间元组 print(ttl)
执行
[root@node10 python]# python3 test.py time.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 time res = time.ctime() # 默认使用当前时间戳 print(res) res = time.ctime(1557645000) # 可以手动自定义时间戳 print(res)
执行
[root@node10 python]# python3 test.py Mon Nov 25 07:38:28 2019 Sun May 12 03:10:00 2019
2.5 asctime()
通过[时间元组]获取[时间字符串](参数是时间元组)
import time ttl = (2019,5,12,15,21,0,1,0,0) res = time.asctime(ttl) print(res)
执行
[root@node10 python]# python3 test.py Tue May 12 15:21:00 2019
优化版
import time ttl = (2019,5,12,15,21,0,4,0,0) res = time.mktime(ttl) print(time.ctime(res))
执行
[root@node10 python]# python3 test.py Sun May 12 16:21:00 2019
2.6 strftime()
通过[时间元组]格式化[时间字符串] (格式化字符串,[可选时间元组参数])
import time res = 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.py 2019-11-25 07:42:20 2008-08-08 08:08:08
2.7 strptime()
通过[时间字符串]提取出[时间元组] (时间字符串,格式化字符串)
注意:左右两侧的字符串要严丝合缝,有多余的空格都不行,然后按照次序,依次通过格式化占位符,提取时间
import time res = time.strptime("2019年3月8号15点21分30秒,发射了人造卫星嫦娥" , "%Y年%m月%d号%H点%M分%S秒,发射了人造卫星嫦娥") print(res)
执行
[root@node10 python]# python3 test.py time.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 time startime = time.perf_counter() print(startime) for i in range(1000000000): pass endtime = time.perf_counter() # 结束时间 - 开始时间[ time.time()] 也可以实现; res = endtime - startime print(res)
执行
[root@node10 python]# python3 test.py 252269.756153608 44.59376426698873
作者:梦中泪
关于作者:云计算,linux,虚拟化,存储
---------------------------------------------------------------------------
个性签名:我以为我很颓废,今天我才知道,原来我早报废了。
如果觉得本篇文章最您有帮助,欢迎转载,且在文章页面明显位置给出原文链接!记得在右下角点个“推荐”,博主在此感谢!