当前位置: 首页 > news >正文

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正则化库还有第三方库。                                                                            

http://www.dtcms.com/a/270590.html

相关文章:

  • python 异步编程事件循环的共享问题
  • 达梦:指定数据文件还原的路径
  • 【Linux | 网络】socket编程 - 使用TCP实现服务端向客户端提供简单的服务
  • Ragas的Prompt Object
  • 大数据在UI前端的应用深化:用户行为模式的挖掘与预测性分析
  • 网络信息安全学习笔记1----------网络信息安全概述
  • 2025年新材料与清洁能源国际会议(IACNMCE 2025)
  • 计算机网络实验——访问H3C网络设备
  • 题解:P13017 [GESP202506 七级] 线图
  • 【机器学习】BeamSearch算法
  • BEV感知2
  • python学习打卡:DAY 24 元组和OS模块
  • 5202年安装TensorFlow纪实
  • 【LeetCode207.课程表】以及变式
  • 暑假算法日记第五天
  • [2025CVPR]Mr. DETR:检测Transformer的多路由指导训练解析
  • Mysql组合索引的update在多种情况下的间隙锁的范围(简单来说)
  • 141-CEEMDAN-VMD-Transformer-BiLSTM-ABKDE多变量区间预测模型!
  • [数学基础] 矩阵的秩及其应用
  • El-Select组件实现模糊查询与失焦赋值
  • 第6章应用题
  • 学术绘图(各种神经网络)
  • 5.注册中心横向对比:Nacos vs Eureka vs Consul —— 深度解析与科学选型指南
  • Microsoft AZ-305 Exam Question
  • Flutter基础(前端教程⑦-Http和卡片)
  • Flutter基础(前端教程⑥-按钮切换)
  • 《重构项目》基于Apollo架构设计的项目重构方案(多种地图、多阶段、多任务、状态机管理)
  • 【教程】在ubuntu安装Edge浏览器
  • 工业通讯网关在电子制造中的核心作用——从DeviceNet到Modbus TCP的智能转换
  • 家庭网络中的服务器怎么对外提供服务?