题目:
输入:
20200202
输出:
20211202
21211212
题解思路:
首先用户输入一个数要用到input,然后要把这个数据转化成日期格式才能判断这个数是不是回文日期,并且是一个正常的日期,还要判断它既是回文也是ab型
题解:
import datetime
N=input()#八位整数,代表日期yyyymmdd
yyyy=int(N[0:4])
mm=int(N[4:6])
dd=int(N[6:])
date=datetime.date(yyyy,mm,dd)#将N转化为日期格式
lst1=[]#储存第一个回文日期
lst2=[]#储存第一个ABABBABA日期 #第一个回文日期可以等于第一个ABABBABA日期
for i in range(10000101,89991231):#遍历N至92900929
date+=datetime.timedelta(days=1)#输入的日期加1天
yyyymmdd=''.join(list(str(date).split('-')))#将日期格式XXXX-XX-XX,转换为字符串格式yyyymmdd
if yyyymmdd==yyyymmdd[::-1]:#判断回文
if yyyymmdd[:2]==yyyymmdd[2:4] and lst1==[]:#在回文中判断ABAB
lst1.append(yyyymmdd)
if lst2==[]:
lst2.append(yyyymmdd)
if lst1 and lst2:
print(lst2[0])
print(lst1[0])
break
补充:
python切片:
切片是一个操作,并不会改变原来的值,首先,可以切片的数据类型有列表,元组,字符串,可迭代对象。
切片的索引方式有两种,第一种是正索引->,第二种是负索引<-
语法格式:
object[start_index:end_index:step]
start_index:起始索引,包含索引本身
end_index:终止索引,不包含索引本身
step:步长,可以是正负数,决定了切取的方向
所以相当于一个左闭右开区间
了解了基本结构我们可以看一些基本操作:
a=[0,1,2,3,4,5,6,7,8]
1.取偶数位置
print(a[::2])
获取的结果就是
[0, 2, 4, 6, 8]
因为它默认从左往右,然后起始和终止没有数字就代表是整个列表,步长为正也是从左往右,从0开始
2.取奇数位置
print(a[1::2])
获取的结果就是
[1, 3, 5, 7]
从下标为1开始,向右取两个
3.取完整对象:
print(a[:])
print(a[::])
print(a[::1])
三种方法获取的结果都是一样的
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
4,获取反序的对象
print(a[::-1])
获取的结果
[8, 7, 6, 5, 4, 3, 2, 1, 0]
因为步长为-1所以是从右往左切
5.取单个值,也就是取某个下标的值
print(a[0])
print(a[1])
print(a[-2])
结果:
0
1
7
6.修改某个元素
a[3]=121
print(a)
结果
[0, 1, 2, 121, 4, 5, 6, 7, 8]
7. 修改替换部分元素
a[3:5]=[1,22]
print(a)
结果
[0, 1, 2, 1, 22, 5, 6, 7, 8]
8. 连续切片
print(a[:7][2:5][-1:])
结果
[4]
相当于一段一段切,先切a[:7],得到的结果再继续[2:5],最后再[-1:],得到结果
切片的简单操作就是这些,灵活运用可以解决python的各种问题
以上就是今天的分享,继续加油!!!