Python标准库:时间与随机数全解析
Python标准库是Python语言自带的模块和包集合,无需额外安装即可使用。它涵盖了文件操作、系统交互、网络通信、数据处理等核心功能,是Python开发的基础工具。我们可以直接通过import *** 来导入。下面我来介绍其中的time(时间)库,random(随机)库,re(正则化)库。
一 time库
1 time.time()时间戳
time.time()获取的是当前时间与1970年1月1日0时0分0秒的时间差。1970纪元后经过的浮点秒数
import time
time1=time.time()
print(time1)
这里返回 1752060161.2916129,可见精度特别高.
我们还可以通过这个来测试我们的程序运行时间,后期可以用来对比程序的好坏。
import time
start=time.time()
q=1
for i in range(1000000):q=q+1
end=time.time()
print('起始时间:',start)
print('结束时间:',end)
print('花费时间:',end-start)
运行结果
2 .获取时间的库
这里有三个函数可以获取时间,分别是localtime(),gmtime(),ctime()。他们获取的格式不同,下面我来一一举例来看。
localtime()这个函数默认是返回本地北京时间,但可以传入参数(时间戳),下面举例
import time
a=time.localtime()
print(a)
print(list(a))
print(time.localtime(1752060161.2916129))
运行结果
以下面格式输出
tm_year(年)tm_mon(月)tm_dday(日)tm_hour(时)tm_min(分)tm_sec(秒)tm_wday(一周中的第几天,从0开始的)tm_yday(一个月中的第几天)isdst是否为夏令时(0代表非夏令时,1代表夏令时)
gmtime()这个函数用于获取世界标准时间,也和 localtime()一样,默认是返回表准时间,但可以传入参数(时间戳)
import time
a=time.gmtime()
print(a)
print(list(a))
print(time.gmtime(1752060161.2916129))
运行结果:(参数含义和上面相同,只是时间不一样差8小时)
ctime()用于获取字符串形式的时间,也和 localtime()一样,默认是返回本地时间,但可以传入参数(时间戳)
import time
a=time.ctime()
print(a)
print(time.ctime(1752060161.2916129))
运行结果:以 星期 月 日期 小时:分钟:秒 年份这种形式返回,比较符合西方人的格式。
3 时间格式转换
mktime用于将本地时间的 struct_time 对象转换为时间戳(自 1970 年 1 月 1 日以来的秒数)。
import time# 创建一个 struct_time 对象(本地时间)
time_tuple = (2023, 10, 5, 12, 30, 45, 0, 278, -1)# 使用 mktime 转换为时间戳
timestamp = time.mktime(time_tuple)
print("时间戳:", timestamp)# 将时间戳转换回可读时间
local_time = time.localtime(timestamp)
print("本地时间:", time.strftime("%Y-%m-%d %H:%M:%S", local_time))
strftime 用于将时间对象格式化为字符串
import time# 获取当前时间的时间元组
current_time = time.localtime()# 格式化为字符串
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", current_time)
print(formatted_time) # 输出类似:2023-10-05 15:30:45
strptime用于将字符串解析为时间对象
import time# 时间字符串
time_string = "2023-10-05 15:30:45"# 解析为时间元组
parsed_time = time.strptime(time_string, "%Y-%m-%d %H:%M:%S")
print(parsed_time) # 输出:time.struct_time(tm_year=2023, tm_mon=10, tm_mday=5, tm_hour=15, tm_min=30, tm_sec=45, ...)
常用格式化符号
%Y
:四位数的年份(如 2023)%m
:两位数的月份(01-12)%d
:两位数的日期(01-31)%H
:24 小时制的小时(00-23)%M
:分钟(00-59)%S
:秒(00-59)
4 时间休眠
time库中有sleep可以控制程序休眠
import time
start=time.time()
time.sleep(2)
end=time.time()
print('起始时间:',start)
print('结束时间:',end)
print('花费时间:',end-start)
可见这里函数停顿了两秒
二 随机库 random
Python 中的 random
模块提供了生成伪随机数的功能,广泛应用于模拟、游戏、密码学等领域。该模块包含多种方法,可用于生成随机整数、浮点数、序列操作等。
常用方法及实例代码
生成随机浮点数
random.random()
生成一个 [0.0, 1.0) 范围内的随机浮点数。
import random
print(random.random()) # 输出示例: 0.5488135039273248
生成指定范围的随机整数
random.randint(a, b)
生成一个 [a, b] 范围内的随机整数。
import random
print(random.randint(1, 10)) # 输出示例: 7
生成指定范围内的随机浮点数
random.uniform(a, b)
生成一个 [a, b] 范围内的随机浮点数。
import random
print(random.uniform(1.5, 3.5)) # 输出示例: 2.34567890123
从序列中随机选择元素
random.choice(seq)
从非空序列中随机选择一个元素。
import random
colors = ['red', 'green', 'blue']
print(random.choice(colors)) # 输出示例: 'green'
打乱序列顺序
random.shuffle(seq)
打乱序列的顺序(原地修改)。
import random
cards = ['A', '2', '3', 'J', 'Q', 'K']
random.shuffle(cards)
print(cards) # 输出示例: ['Q', 'A', '3', 'K', '2', 'J']
从序列中随机采样
random.sample(population, k)
从序列中随机选择 k 个不重复的元素。
import random
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.sample(numbers, 3)) # 输出示例: [5, 2, 8]
随机种子
random.seed(),这里我们实现并不会知道这个种植出现的结果是上面,我们只有先用这个种子生成一个结果,然后在不改变种子数值的情况下可以复现结果。
import random
random.seed(42)
print(random.random()) # 输出示例: 0.6394267984578837
注意事项
- 伪随机性:
random
模块生成的随机数是伪随机的,基于算法和种子值。 - 种子设置:可以通过
random.seed(a=None)
设置种子值,确保结果可复现。
实战
我们基于上面两个库,我们来完成一个猜数字小游戏
import random
import timea=random.randint(1,10)
while True:try:b = int(input("请输入你猜的:"))except:print("请输入一个数字")continueif b==a:time.sleep(0.5)print('你答对了!')s=input("你还想继续玩吗?y/n")if s=='y':a = random.randint(1, 10)continueelse:breakelif b>a:time.sleep(0.5)print('大了!')elif b<a:time.sleep(0.5)print('小了!')
明天我们继续学习re正则化库还有第三方库。