鉴于今天的日期比较特殊,又因为朋友忽然有个想法,让我列出所有跟今天日期一致类型的日期,于是我开始了尝试。
我的思路一开始想到的就是回文,但是后来又一想不就是先输出四位然后再将这四位逆序输出,然后连接输出。最后判断这样的八位是否符合日期的标准。
首先先构造这样的八位字符串
for i in lis:
for j in lis:
for k in lis:
for m in lis:
s = i + j + k + m
f = s + s[::-1]
然后就是判断是否属于规范的日期形式
def Date(a):
year = int(a[0:4])
month = int(a[4:6])
day = int(a[6:8])
if year == 0 :
return False
if month == 0 or month > 12:
return False
else:
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12 :
if ( day <= 31 ) and ( day != 0 ) :
return True
else:
if month == 4 or month == 6 or month == 9 or month == 11 :
if ( day <= 30 ) and ( day != 0 ) :
return True
else:
if ( year % 400 != 0 ) and ( year % 4 == 0 ):
if ( day <= 28 ) and ( day != 0 ):
return True
else:
if ( day <= 29 ) and ( day != 0 ):
return True
将代码合起来,我还对这样的日期做了个统计
lis = ['0','1','2','3','4','5','6','7','8','9']
s = []
f = []
c = 0
def Date(a):
year = int(a[0:4])
month = int(a[4:6])
day = int(a[6:8])
if year == 0 :
return False
if month == 0 or month > 12:
return False
else:
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12 :
if ( day <= 31 ) and ( day != 0 ) :
return True
else:
if month == 4 or month == 6 or month == 9 or month == 11 :
if ( day <= 30 ) and ( day != 0 ) :
return True
else:
if ( year % 400 != 0 ) and ( year % 4 == 0 ):
if ( day <= 28 ) and ( day != 0 ):
return True
else:
if ( day <= 29 ) and ( day != 0 ):
return True
for i in lis:
for j in lis:
for k in lis:
for m in lis:
s = i + j + k + m
f = s + s[::-1]
if Date(f):
print(f)
c = c + 1
print(c)
最后一共有365个这样的日期,暂不确定是否正确,如有错误请大家指教。