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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chrisyyl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值