用python列出所有对称的日期(8位)

鉴于今天的日期比较特殊,又因为朋友忽然有个想法,让我列出所有跟今天日期一致类型的日期,于是我开始了尝试。

我的思路一开始想到的就是回文,但是后来又一想不就是先输出四位然后再将这四位逆序输出,然后连接输出。最后判断这样的八位是否符合日期的标准。
首先先构造这样的八位字符串

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个这样的日期,暂不确定是否正确,如有错误请大家指教。

你可能感兴趣的:(练习,python)