Python标准库:时间与随机数全解析

Python标准库是Python语言自带的模块和包集合,无需额外安装即可使用。它涵盖了文件操作、系统交互、网络通信、数据处理等核心功能,是Python开发的基础工具。我们可以直接通过import *** 来导入。下面我来介绍其中的time(时间)库,random(随机)库,re(正则化)库。

一 time库

1 time.time()时间戳

time.time()获取的是当前时间与1970年1月1日0时0分0秒的时间差。1970纪元后经过的浮点秒数

python 复制代码
import time
time1=time.time()
print(time1)

这里返回 1752060161.2916129,可见精度特别高.

我们还可以通过这个来测试我们的程序运行时间,后期可以用来对比程序的好坏。

python 复制代码
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()这个函数默认是返回本地北京时间,但可以传入参数(时间戳),下面举例

python 复制代码
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()一样,默认是返回表准时间,但可以传入参数(时间戳)

python 复制代码
import time
a=time.gmtime()
print(a)
print(list(a))
print(time.gmtime(1752060161.2916129))

运行结果:(参数含义和上面相同,只是时间不一样差8小时)

ctime()用于获取字符串形式的时间,也和 localtime()一样,默认是返回本地时间,但可以传入参数(时间戳)

python 复制代码
import time
a=time.ctime()
print(a)
print(time.ctime(1752060161.2916129))

运行结果:以 星期 月 日期 小时:分钟:秒 年份这种形式返回,比较符合西方人的格式。

3 时间格式转换

mktime用于将本地时间的 struct_time 对象转换为时间戳(自 1970 年 1 月 1 日以来的秒数)。

python 复制代码
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 用于将时间对象格式化为字符串

python 复制代码
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用于将字符串解析为时间对象

python 复制代码
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可以控制程序休眠

python 复制代码
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) 范围内的随机浮点数。

python 复制代码
import random
print(random.random())  # 输出示例: 0.5488135039273248
生成指定范围的随机整数

random.randint(a, b) 生成一个 [a, b] 范围内的随机整数。

python 复制代码
import random
print(random.randint(1, 10))  # 输出示例: 7
生成指定范围内的随机浮点数

random.uniform(a, b) 生成一个 [a, b] 范围内的随机浮点数。

python 复制代码
import random
print(random.uniform(1.5, 3.5))  # 输出示例: 2.34567890123
从序列中随机选择元素

random.choice(seq) 从非空序列中随机选择一个元素。

python 复制代码
import random
colors = ['red', 'green', 'blue']
print(random.choice(colors))  # 输出示例: 'green'
打乱序列顺序

random.shuffle(seq) 打乱序列的顺序(原地修改)。

python 复制代码
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 个不重复的元素。

python 复制代码
import random
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.sample(numbers, 3))  # 输出示例: [5, 2, 8]
随机种子

random.seed(),这里我们实现并不会知道这个种植出现的结果是上面,我们只有先用这个种子生成一个结果,然后在不改变种子数值的情况下可以复现结果。

python 复制代码
import random
random.seed(42)
print(random.random())  # 输出示例: 0.6394267984578837
注意事项
  • 伪随机性:random 模块生成的随机数是伪随机的,基于算法和种子值。
  • 种子设置:可以通过 random.seed(a=None) 设置种子值,确保结果可复现。

实战

我们基于上面两个库,我们来完成一个猜数字小游戏

python 复制代码
import random
import time


a=random.randint(1,10)
while True:
    try:
        b = int(input("请输入你猜的:"))
    except:
        print("请输入一个数字")
        continue
    if b==a:
        time.sleep(0.5)
        print('你答对了!')
        s=input("你还想继续玩吗?y/n")
        if s=='y':
            a = random.randint(1, 10)
            continue
        else:
            break
    elif b>a:
        time.sleep(0.5)
        print('大了!')
    elif b<a:
        time.sleep(0.5)
        print('小了!')

明天我们继续学习re正则化库还有第三方库。

相关推荐
加减法原则20 分钟前
Vue3 组合式函数:让你的代码复用如丝般顺滑
前端·vue.js
失败又激情的man1 小时前
python之requests库解析
开发语言·爬虫·python
打酱油的;1 小时前
爬虫-request处理get
爬虫·python·django
yanlele1 小时前
我用爬虫抓取了 25 年 6 月掘金热门面试文章
前端·javascript·面试
lichenyang4531 小时前
React移动端开发项目优化
前端·react.js·前端框架
kngines1 小时前
【力扣(LeetCode)】数据挖掘面试题0002:当面对实时数据流时您如何设计和实现机器学习模型?
机器学习·数据挖掘·面试题·实时数据
你的人类朋友1 小时前
🍃Kubernetes(k8s)核心概念一览
前端·后端·自动化运维
web_Hsir1 小时前
vue3.2 前端动态分页算法
前端·算法
烛阴2 小时前
WebSocket实时通信入门到实践
前端·javascript
草巾冒小子2 小时前
vue3实战:.ts文件中的interface定义与抛出、其他文件的调用方式
前端·javascript·vue.js