当前位置:实例文章 » Python实例» [文章]【Python】常用内置模块

【Python】常用内置模块

发布人:shili8 发布时间:2023-04-12 08:25 阅读次数:45

一、time模块

内置模块需要导包

时间戳

学习时间相关的模块前,了解三个概念。时间戳(毫秒为单位),结构化时间,字 符串形式的时间:


time模块常用操作方法

直接获取时间格式时间

# ---- 时间戳格式 ----

time.time() 从Unix诞生日开始算,距离至今经历多少秒(1970.1.1 8:00开始 计算)

import time

print(time.time())


直接获取结构化格式时间

# ---- 结构化格式 ----

time.localtime() 显示本地时间(中国为东八区,上海时间)# 如果未指定参数seconds,则默认放入time.time()

import time

print(time.localtime())

time.gmtime() 显示世界UTC时间(与本地时间差8h)# 如果未指定参数seconds,则默认放入time.time()

import time

print(time.gmtime())

?# ---- 结构化时间其他玩法 ----
print(time.localtime().tm_year) # 只拿到年份 2020
# ---- 字符串格式 ----
print(time.asctime())
print(time.ctime())
print(time.strftime("%Y-%m-%d %H:%M:%S")) # 相当于 : %Y-%m-%d %X


执行结果:
Tue May 26 00:36:11 2020
Tue May 26 00:36:11 2020
2020-05-26 00:36:11
?


直接获取字符串格式时间

time.strftime() 显示一个按照指定格式格式化好的本地时间

import time

print(time.strftime("%Y-%m-%d %X")

time.asctime() 显示一个格式化好的本地时间,该格式时间为Linux系统采用

import time

print(time.asctime())

time.ctime() 显示一个格式化好的世界时间,该格式时间为Linux系统采用

import time

print(time.ctime())

转换方法

time.mktime() 放入一个结构化时间,可以转换为时间戳形式

time.strftime()

放入一个结构化时间,可以按照指定格式转换为字符串形式

可选参数格式 (%Y-%m-%d %H:%M:%S` 或者 %Y-%m-%d %X ),注意可以加入%p代表 时间,上午或者下午

# ==============转换相关=======================

# --- 结构化时间转时间戳 ---
print(time.mktime(time.localtime())) # 1590424571.0

# --- 结构化时间转字符串 ---
print(time.strftime("%Y-%m-%d %X",time.gmtime())) # 如不指定
time.strftime()的参数。默认为localtime() Tue May 26 00:36:11 2020

# --- 字符串格式转结构化 ---
print(time.strptime(time.ctime())) # 默认转换格式是%a %b %d %H:%M:%S
%Y。刚好可以放ctime或者asctime,因为ctime和asctime支持该种格式。
res = time.strftime("%Y-%m-%d %X")
print(time.strptime(res,"%Y-%m-%d %X")) # 如果放入的是其他格式的字符串
时间,则需要按原定格式转回,相当于strftime的逆操作。

执行结果:
time.struct_time(tm_year=2020, tm_mon=5, tm_mday=26, tm_hour=0,
tm_min=36, tm_sec=11, tm_wday=1, tm_yday=147, tm_isdst=-1)
time.struct_time(tm_year=2020, tm_mon=5, tm_mday=26, tm_hour=0,
tm_min=36, tm_sec=11, tm_wday=1, tm_yday=147, tm_isdst=-1)
?

# --- 时间戳转本地结构化 ---
print(time.localtime(333333))
#输出:
# time.struct_time(tm_year=1970, tm_mon=1, tm_mday=5, tm_hour=4,
tm_min=35, tm_sec=33, tm_wday=0, tm_yday=5, tm_isdst=0)

# --- 时间戳转UTC时间结构化 ---
print(time.gmtime(333333))
# 输出:
# time.struct_time(tm_year=1970, tm_mon=1, tm_mday=4, tm_hour=20,
tm_min=35, tm_sec=33, tm_wday=6, tm_yday=4, tm_isdst=0)

# --- 时间戳转固定的UTC时间字符串格式 ---
print(time.ctime(00))
# Thu Jan 1 08:00:00 1970
print(time.asctime(1)) 注意。无法时间戳转本地字符串格式时间
#Traceback (most recent call last):
File "D:\PycharmProjects\python39_Project\module\time_test.py",
line 44, in <module>
print(time.asctime(1))
TypeError: Tuple or struct_time argument required

# --- 时间戳转本地时间字符串格式 --- 重点!
t = time.time()
struct_lo = time.localtime(t) # 先转为本地结构化时间
res = time.strftime("%Y-%m-%d %X",struct_lo) # 将本地结构化时间转为字
符串格式时间
print(res) # 2020-05-26 00:36:11

# --- 时间戳转UTC时间字符串格式 --- 重点!
t = time.time()
struct_gm = time.gmtime(t)
res = time.strftime("%Y-%m-%d %X",struct_gm)
print(res) # 2020-05-25 16:36:11

# --- 字符串格式转时间戳 --- 重点!
str_time = "1998-01-26 00:00:10"
struct_lo = time.strptime(str_time,"%Y-%m-%d %X") # 先转为本地结构化
时间
res = time.mktime(struct_lo) # 将本地结构化时间转为时间戳格式
print(res) # 885744010.0

# 总结 #
"""
字符串与时间戳的转换
字符串 ----> 结构化时间(指定是UTC时间还是本地时间) ---> 时间戳
"""

time模块中实现时间的加减

import time
to_day_time = time.time()
sum_7day_time = to_day_time+7*86400 #七天后的时间 = 天数 乘以 每天的秒数总和

sub_3day_time = to_day_time-3*86400 #三天前的时间

str_to_day_time = time.strftime("%Y-%m-%d %X",time.localtime(to_day_time))

str_sum_7day_time = time.strftime("%Y-%m-%d %X",time.localtime(sum_7day_time))

str_sub_3day_time = time.strftime("%Y-%m-%d %X",time.localtime(sub_3day_time))

print(str_to_day_time) # 2020-05-26 00:57:33 当前时间
print(str_sum_7day_time) # 2020-06-02 00:57:33 七天后的时间
print(str_sub_3day_time) # 2020-05-23 00:57:33 三天前的时间

扩展:结构化时间详解

import time
print(time.localtime())


"""
本地时间参数详解:
time.struct_time(tm_year=2020, tm_mon=5, tm_mday=26, tm_hour=0,
tm_min=47, tm_sec=0, tm_wday=1, tm_yday=147, tm_isdst=0)
tm_year : 年
tm_mon : 月
tm_mday : 日
tm_ hour : 时
tm_min : 分
tm_sec : 秒
tm_wday : 星期几(从0开始计算,星期一是0,星期二是1,以此类推)
tm_yday : 该年份中第多少天
tm_isdst : 夏令时时间
"""
?


time练习

使用time模块,将对字典的增删改查操作的成功与否写进文本文件中:

num_dict = {'name': 'Lisa', "age": '18'}


def creat_event(k, v):
    num_dict.update({k: v})
    if k:
        return f"请输入您想添加的字段名[{k}]的数据[{v}]成功!"
    else:
        return f"请输入您想添加的字段名[{k}]的数据[{v}]失败!"


def delete_event(k):
    num_dict.pop(k)
    if k:
        return f"请输入您想删除的字段名[{k}]成功!"
    else:
        return f"请输入您想删除的字段名[{k}]失败!"


def modify_event(k, v):
    num_dict.update({k: v})
    if k:
        return f"请输入您想修改的字段名[{k}]的数据[{v}]成功!"
    else:
        return f"请输入您想修改的字段名{k}的数据{v}失败!"


def look_event(k):
    num_dict.items()
    if k:
        return f"请输入您想查看的字段名[{k}]成功!"
    else:
        return f"请输入您想查看的字段名[{k}]失败!"


def write_log(msg):
    message_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    message = f"[{message_time}] [localhost] [info] [message:{msg}]"
    with open("message.log", "a+", encoding="utf-8") as fw:
        fw.write(message + "\n")




def main():
    menu = '''
    --------欢迎来到本系统--------
     1、增加数据
     2、删除数据
     3、修改数据
     4、查询数据
     '''
    while True:
        print(menu)
        user_input = input("请输入您想操作的序号:")
        if user_input == "1":
            support_key = list(num_dict.keys())
            print("当前系统所支持的字段名", support_key)
            k = input("请输入您想添加数据的字段名:")
            v = input(f"请输入您想添加的字段名{k}的数据:")
            msg = creat_event(k, v)
            print(num_dict)
            write_log(msg)

        elif user_input == "2":
            support_key = list(num_dict.keys())
            print("当前系统所支持的字段名", support_key)
            k = input("请输入您想删除数据的字段名:")
            msg = delete_event(k)
            print(num_dict)
            write_log(msg)

        elif user_input == "3":
            support_key = list(num_dict.keys())
            print("当前系统所支持的字段名", support_key)
            k = input("请输入您想修改的数据的字段名:")
            v = input(f"请输入您想修改的字段名{k}的数据:")
            msg = modify_event(k, v)
            print(num_dict)
            write_log(msg)

        elif user_input == "4":
            support_key = list(num_dict.keys())
            print("当前系统所支持的字段名", support_key)
            k = input("请输入您想查看的数据的字段名:")
            msg = look_event(k)
            print(num_dict)
            write_log(msg)

        else:
            print("您输入的不是正确的序号!")


main()

二、datetime模块常用操作方法

直接获取字符串格式时间
datetime.now() 返回一个固定格式的本地字符串格式化时间。%Y-%m-%d %X
datetime.utcnow() 返回一个固定格式的UTC字符串格式化时间


时间转换
date.fromtimestamp() 放入一个时间戳格式的时间,直接转换为字符串格式时间。(如:time.time())


时间加减
datetime.timedelta() 为一个字符串格式的时间加减时间


时间替换
datetime对象.replace() 替换一个字符串格式的时间中某部分


三、random模块

random模块可用于生成随机数

random模块常用操作方法

生成1个整数
random.randint(1,3) 生成1,2,3中随机一个整数(顾头顾尾)
random.randrange(1,3) 生成1,2中随机一个整数(顾头不顾尾)

生成1个小数
random.random() 大于0且小于1的小数
random.uniform(1,3) 大于1且小于3的小数

列表随机取元素
random.choice([1,"a","b"]) 随机取一个元素
random.sample([1,"a","b"],2) 随机取两个元素,由参数指定

随机打乱顺序
random.shuffle([1,2,3,4,5]) 随机打乱顺序

演示

import random
print(random.random()) # (0,1)----float 大于0且小于1之间的小数
0.25697226355807967


print(random.randint(1, 3)) # [1,3] 大于等于1且小于等于3之间的整数
3


print(random.randrange(1, 3)) # [1,3) 大于等于1且小于3之间的整数 2


print(random.choice([1, '23', [4, 5]])) # 1或者23或者[4,5] 结果是:
23
print(random.sample([1, '23', [4, 5]], 2)) # 列表元素任意2个组合
[[4, 5], 1]


print(random.uniform(1, 3)) # 大于1小于3的小数,如2.3551911687118054
item = [1, 3, 5, 7, 9]


random.shuffle(item) # 打乱item的顺序,相当于"洗牌"
print(item) # [1, 5, 3, 9, 7]
?


random练习

和计算机玩猜大小,猜拳,判断谁赢

import random


def random_text():
    while True:
        compuer_guess = random.randint(1, 3)
        user_input = int(input("请输入你猜的数:"))
        if compuer_guess == user_input:
            print("恭喜你!你猜对了!")
            print(compuer_guess)
            break
        elif compuer_guess != user_input:
            print("你猜错了!")
            print(compuer_guess)
        else:
            print("你输入的不是数字!")


random_text()

import random

def random_text2():
    while True:
        compuer_guess = random.choice(["剪刀", "石头", "布"])
        user_input = input("请输入你出的手势:")
        if compuer_guess == "剪刀" and user_input == "石头":
            print("恭喜你!你赢了!")
            print(compuer_guess)
            break
        elif compuer_guess == "剪刀" and user_input == "布":
            print("哎呀!你输了哦!")
            print(compuer_guess)
        elif compuer_guess == "剪刀" and user_input == "剪刀":
            print("你们是平局哦!")
            print(compuer_guess)
        elif compuer_guess == "石头" and user_input == "石头":
            print("你们是平局哦!")
            print(compuer_guess)
        elif compuer_guess == "石头" and user_input == "剪刀":
            print("哎呀!你输了哦!")
            print(compuer_guess)
        elif compuer_guess == "石头" and user_input == "布":
            print("恭喜你!你赢了!")
            print(compuer_guess)
            break
        elif compuer_guess == "布" and user_input == "布":
            print("你们是平局哦!")
            print(compuer_guess)
        elif compuer_guess == "布" and user_input == "剪刀":
            print("恭喜你!你赢了!")
            print(compuer_guess)
            break
        elif compuer_guess == "布" and user_input == "石头":
            print("哎呀!你输了哦!")
            print(compuer_guess)
        else:
            print("你输入的不是剪刀,石头,布")


random_text2()

相关标签:

免责声明

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱290110527@qq.com删除。

其他信息

其他资源

Top