蓝桥题库-乱序

回文日期

在这里插入图片描述
在这里插入图片描述

感觉很麻烦,但是暴力写出来感觉速度还行

s=input()
year = int(s[:4])
#求回文日期
while True:  
    month=int(str(year)[::-1][:2])
    day=int(str(year)[::-1][2:])
    if 0<month<=12:
        if 0<day<=31:
            if month==2:
                if year%400==0 or year%4==0:
                    if day>28:
                        year+=1
                        continue
                else:
                    if day>27:
                        year+=1
                        continue
            elif month==4 or month == 6 or month ==9 or month == 11 :
                if day>30:
                    year+=1
                    continue
        else:
            year+=1
            continue
        ne=str(year)+str(year)[::-1]
        if ne==s:
            year+=1
            continue
        else:
            print(ne)
        break
    else:
        year+=1
        continue
#求ABABBABA,AB的倒叙只要大于0小于等于12就行了
a=s[:2]
while True:
    month=int(a[::-1])
    if 0<month<=12:
        nee=a+a+a[::-1]+a[::-1]
        if nee == s:
            a=str(int(a)+1)
        else:
            print(nee)
            break
    else:
        a=str(int(a)+1)
        continue

在这里插入图片描述

得:

日期库:[datetime]
常用的函数:

日期的传入:

import datetime
t=datetime.date(2019,8,26)
print(type(t))
print(t.day,t.month,t.year)
#<class ‘datetime.date’>
#26 8 2019

ISO标准化日历
语法:datetime.date.isocalendar()
返回一个包含三个值的元组(year,weeknumber,weebday):
year年份,weeknumber周序号,weekday星期序号(周一为1…周日为7)

eg:
a1 = datetime.date(2019,8,26)
print(a1.isocalendar())
#(2019, 35, 1)
#2019-08-26

weekday方法
语法:date对象.weekday()
返回weekday,如果是星期一,返回0,如果星期2,返回1
replace替换方法
语法:date对象.replace(year,month,day)
返回一个替换指定日期字段的新date对象。注意替换是产生新对象,不影响原date对象

import os
import sys
import datetime
# 请在此输入您的代码
date=input()
y=int(date[0:4]) # 将输入的日期转化为年月日的形式
m=int(date[4:6])
d=int(date[6:])
dd=datetime.date(y,m,d) # 将y,m,d转化为日期格式
flag=True # 输出一次回文日期
for i in range(9999999):
  dd=dd+datetime.timedelta(days=1)  # 日期增加1天
  strdd=str(dd).replace('-','') # 将日期转换为字符串的形式并将其中的-符号去掉
  if strdd==strdd[::-1]:
    if flag:
      print(strdd)
      flag=False
    if strdd[0]==strdd[2]==strdd[-1]==strdd[-3] and strdd[1]==strdd[3]==strdd[-2]==strdd[-4] :
      print(strdd)
      break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值