三、蓝桥python2020省赛回文日期

                                                      回文日期

目录

                                                      回文日期

题目描述

题目链接: 

题解:

 1.思路分析:

2.python中datetime库的使用:

3.python中的一些字符串操作:


题目描述

2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。

有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。

也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,顶多算 “千年两遇”。

给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

题目链接: 

回文日期 - 蓝桥云课 (lanqiao.cn) 

题解:

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

 1.思路分析:

进行回文日期的寻找,要在原日期的基础上进行遍历寻找,但此时的数据类型应该是日期类型,不能用int类型进行遍历,先将其转换成日期格式,对日期每次加一进行判断,在判断时要注意先寻找回文日期,再寻找满足ABABBABA类型的日期。但是两种日期都是回文日期,要先判断是回文日期,输出第一个回文日期,找到第一个回文日期之后再找到的满足回文日期条件的出来ABABBABA类型的都不再输出,此时添加了一个flag变量,如果flag是初始值,证明原来没有输出过回文日期,输出之后改变flag的值,以后再有满足条件的数便不再输出。再继续遍历,判断满足ABABBABA类型的日期输出之后退出循环。

2.python中datetime库的使用:

一些常用的方法:

import datetime as dt

# 返回当前日期和时间
date_now = dt.datetime.now()
print(date_now)
# 返回当前日期,date()的对象为日期类型
date_now1 = dt.datetime.now().date()
print(date_now1)
#直接返回当前日期
date_now2 = dt.date.today()
print(date_now2)
# 日期替换
date = dt.date.today().replace(year=2012,month=12,day=25)
print(date)
#获取日期中的天
date1 = date.day
print(date1)
# 日期运算
date2 = dt.timedelta(days=7)
print(date2)
date3 = date+date2
print(date3)
# 生成日期,其中年月日的数据类型为整型
date4 = dt.date(2014,5,6)
print(date4)  #此时数据类型为日期类型以 - 连接
# 格式化日期
print(date4.strftime("%Y/%m:%d"))
print(date4.strftime("%m/%d/%Y"))

测试结果: 

2022-12-30 15:38:22.554331
2022-12-30
2022-12-30
2012-12-25
25
7 days, 0:00:00
2013-01-01
2014-05-06
2014/05:06
05/06/2014

3.python中的一些字符串操作:

str = "abc"
print(str)

# 倒序输出字符串
print(str[::-1])

# 修改字符串中某个值
# str[0] = 'd'  #直接在字符串修改会报错
# print(str)
li = list(str)
li[0] = 'd'
str1 = ''.join(li)
print(str1)

#判断字符串中某个字符在字符串中出现的次数,返回值类型为整型
str2 = 'bbbcccdd'
a = str2.count('b')
print(a)

#去除字符串两边的空格
str3 = "   a b c    "
print(str3.strip())
# 去除左边空格
print(str3.lstrip())
# 去除右边空格
print(str3.rstrip())

#将字符串中某个字符串替换成另一个字符串
str3 = str3.replace('a','aa')
print(str3)

测试结果:

abc
cba
dbc
3
a b c
a b c    
   a b c
   aa b c  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值