数据结构与算法Python版(一)

视频连接

传送门

知识点

在这里插入图片描述

将Unicode字符转换成字节串,好处:少占用内存,查找快一些。

作业:搜索2023年365天是否存在Pi前5000万位中

# 目标:搜索2023年365天是否存在Pi前5000万位中
import datetime

f = open("pi50.4.bin","rb")
dbuff = f.read()


# 将字符串都拼接在一起。第二行代码和第一行代码表示一个意思:都是将二进制转换成两位16进制,并且拼接在一起。
# encode方法将字符串编码为字节序列。
# s = ("".join(("%02x" % d for d in dbuff))).encode()
s = ("".join(("{:02x}".format(d) for d in dbuff))).encode()

d1 = datetime.date(2023,1,1)
found = 0
for n in range(365):
    day = ((d1 + datetime.timedelta(days=n)).strftime("%Y%m%d")).encode()
    if day in s:
        found += 1
        print(f"找到日期: {day.decode()}")

print(f"在Pi的前5000万位中找到的日期总数: {found}")
# .strftime("%Y%m%d") 的作用是将日期对象格式化为指定格式的字符串。
# 在这里,"%Y%m%d" 是一个日期格式化字符串的格式指令,具体含义如下:
# %Y 表示四位数的年份(例如:2023)
# %m 表示两位数的月份(例如:01 表示一月)
# %d 表示两位数的日期(例如:01 表示第一天)
# 综上,.strftime("%Y%m%d")意思就是将202111转换成标准格式20210101

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值