当前位置: 首页 > 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.lryc.cn/news/583483.html

相关文章:

  • 【面试精讲】I2C 子系统核心结构与常见问题深度解析
  • MySQL 09 普通索引和唯一索引
  • 汽车功能安全-软件单元验证 (Software Unit Verification)【用例导出方法、输出物】8
  • 装配式建筑4.0:当房子像汽车一样被“智造”
  • 解锁DevOps潜力:如何选择合适的CI/CD工作流工具
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十六天
  • Spring AI Alibaba Graph使用案例多节点并行执行
  • Webpack、Vite配置技巧与CI/CD流程搭建全解析
  • CentOS7系统部署Node.js LTS V18.16.0
  • 【自动驾驶】经典LSS算法解析——深度估计
  • 佰力博科技与您浅谈低温介电材料特性及应用分析
  • 科技对生态保育的影响?
  • Oracle存储过程导出数据到Excel:全面实现方案详解
  • 专题一_双指针_三数之和
  • 【基础算法】贪心 (四) :区间问题
  • WIFI协议全解析04:从芯片角度看WiFi协议:ESP32/8266 支持了哪些?
  • SQL 视图与事务知识点详解及练习题
  • ARM汇编编程(AArch64架构)课程 - 第7章:SIMD与浮点运算
  • STIDGCN(时空交互动态图卷积网络)的原理,包括其核心模块的设计思路和工作机制 交通预测是智能交通系统中的一个重要任务
  • python+vue的企业产品订单管理系统
  • Redis:分组与设备在 Redis 中缓存存储设计
  • Redis-哨兵机制doctor环境搭建
  • CSS基础选择器、文本属性、引入方式及Chorme调试工具
  • Linux 测开:日志分析 + 定位 Bug
  • 【图像处理基石】如何检测到画面中的ppt并对其进行增强?
  • deepseek实战教程-第十篇deepseek对MCP协议支持
  • 计算机网络实验——网线的制作和测试
  • 7、整合前几篇插件列表
  • 云成本优化的核心原则与框架
  • Spring AI 本地 RAG 实战:用Redis、Chroma搭建离线知识问答系统