版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yk_0311/article/details/82227718
'''
把年月日表示为YYYYMMDD这样的8位整数,然后把这个整数转换成二进制数并且逆序排列,再把得到的二进制转换成十进制数,求与原日期一致的日期。
求得的日期要在上一次东京奥运会(1964年10月10日)到下一次东京奥运会(预定举办日期为2020年7月24日)之间。
例日期为1966年7月13日时:
1.YYYYMMDD格式-->19660713
2.转换成二进制-->1001010111111111110101001
3.逆序排序-->1001010111111111110101001
4.把逆序排列得到的二进制转换成十进制数-->19660713(回到最初的日期1966年7月13日)
'''
# 实质就是转换为二进制之后其中的二进制数就是一个回文
# 这里是关于日期,那么重点在于datetime这个模块的使用
import datetime
def ishuiwen(date): # 输入一个date对象
global ls
n = date.strftime("%Y%m%d") # 转换成为了字符串
strs = str(bin(eval(n))[2:]) # 转换为二进制并且转换为字符串
if strs == strs[::-1]:
ls.append(n)
def judge(begin, end, delta):
while begin < end:
ishuiwen(begin)
begin = begin + delta
begin = datetime.date(1966, 7, 13) # 开始日期
end = datetime.date(2020, 7, 24) # 结束日期
delta = datetime.timedelta(days=1) # 时间差
ls = []
judge(begin, end, delta)
print(ls)
输出:
['19660713', '19660905', '19770217', '19950617', '20020505', '20130201']