python列举一万年内的对称日,python列举一万年,[Python]代码#


[Python]代码

# -*— utf-8 -*-'''Created on 2011-12-27用于求一万年内的对称日,所谓的对称日,即如20111102,20100102这样的日期由于数据量比较大,大约是3652400个数据,运行有点慢,加上用的算法策略神马的比较低级,所以,大概要几分钟才能出来数据@author: rickey'''year=[]month=[]date=[]for y in range(10000):    x= '%04i'%y    #不够四位的用0填充    year.append(x)    #加入到列表中for m in range(1,13):    x='%02i'%m    #月份不够两位的用0填充    month.append(x)    #加入到列表中YearAndMonth=[a+b for a in year for b in month]#加年和月组合成如201201这样的字符串并建立一个新的列表for i in YearAndMonth:    x=YearAndMonth.index(i)    #在新的列表中,用i的位置与12取余,余数是0,2,4,6,7,9,11则是31天的    if x%12 in [0,2,4,6,7,9,11]:        for d in range(1,32):            y='%02i'%d            date.append(i+y)    elif x%12==1:        #如果是二月的情况        if x%12%4==0 or x%12%400==0:            #用i的位置与12取余之后,得到的是年份的顺序            #再进行闰年判断            for d in range(1,30):                y='%02i'%d                date.append(i+y)        else:            for d in range(1,29):                y='%02i'%d                date.append(i+y )    else:        #30天月份的情况        for d in range(1,31):            y = '%02i'%d            date.append(i+y)for i in date:    x=list(i)    x.reverse()    #将x换成列表,然后转置,再重新还原成字符串    y="".join(x)    if y==i:        #如果反转之后还相等,那么就是回文        print(i)

评论关闭