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

相关文章:

  • 方差、协方差和协方差矩阵
  • TCP/IP常用协议
  • Dify升级到1.5.1详细操作步骤,规避和RAGFlow的镜像冲突问题
  • 神经网络基础及API使用详解
  • 零知开源——STM32F407VET6驱动SHT41温湿度传感器完整教程
  • Linux的 `test`命令(或等价中括号写法 `[空格expression空格]`)的用法详解. 笔记250709
  • 恒盾C#混淆加密大师最新版本1.4.0更新 - 增强各类加密效果, 提升兼容性, 使.NET加密更简单
  • 深入理解图像二值化:从静态图像到视频流实时处理
  • HNU 操作系统 Smile_Laughter的学习心得
  • 图像硬解码和软解码
  • git中的指令解释
  • 高级LoRA:面向垂直领域LLM的实战微调指南——LoRA合并、续训、堆叠,Checkpoint管理
  • linux-用户和组
  • 语音识别核心模型的数学原理和公式
  • aichat-core简化 LLM 与 MCP 集成的前端核心库(TypeScript)
  • 前端开发自动化设计详解
  • C#基础篇(10)集合类之列表
  • Ubuntu重装系统后ssh连接不上(遇到 ​​“Unit ssh.service not found“​​ 错误)
  • 钉钉企业应用开发技巧:查询表单实例数据新版SDK指南
  • 【02】MFC入门到精通——MFC 手动添加创建新的对话框模板
  • php7.4使用 new DateTime;报错 Class DateTime not found
  • 轻松更改 Power BI 中的数据源类型
  • Using Spring for Apache Pulsar:Message Production
  • SpringCache整合SpringBoot使用
  • 分类预测 | Matlab基于KPCA-ISSA-SVM和ISSA-SVM和SSA-SVM和SVM多模型分类预测对比
  • 力扣 hot100 Day39
  • HashMap的get、put流程源码分析
  • Redis-哨兵机制doctor环境搭建
  • 零基础上手 Amazon DynamoDB:NoSQL 数据库服务的核心概念与快速搭建指南
  • 3.常⽤控件