以下内容为本篇正文内容,可供参考注:本题代码旨在为正在学习python的pandas库的小伙伴准备,由于内含pandas库,所以不知道能否在某些刷题软件上提交
目录
题目
百度时间
Baidu的服务器上使用的不是北京时间,而是Baidu时间。Baidu时间的时分秒与北京时间相同,但是日期与北京时间不同,是用一个正整数表示从2000年1月1日开始经过了几天。
现在就请大家设计一个程序将北京时间转换为百度时间。在本题中,闰年的年份是400的倍数,或者是4的倍数但不是100的倍数。比如2000和8888均为闰年,但6100不是。
输入格式
输入数据的每一行为一个待转化的北京时间(不含空格和TAB),正确的格式包括两种:
一种为:YYYY-MM-DD,(YYYY表示四位数年份,MM为两位月份,DD为两位日期);
另一种为:MM/DD/YYYY,(YYYY表示四位数年份,MM为两位月份,DD为两位日期);
输出格式
每个数据输出一行。如果可以成功转换,输出一个正整数,否则输出Error。
输入样例
2000-01-01
AStar2007
05/26/2007
输出样例
0
Error
2702
代码展示
import pandas as pd
start=pd.to_datetime('2000-01-01')#将初始时间转化为datetime
while True:
time1 = input()
time = list(time1)
x = len(time)
j = 0
#保证当格式中包含‘-’时,为该种正确格式,即数据类型与题目要求的正确格式匹配,此时先不考虑数值是否正确
if '-' in time:
for i in range(0, x):
if i == 4 or i == 7:
if time[i] == '-':
j += 1
else:
if time[i].isdigit():
j += 1
m = 0
#意义同上
if '/' in time:
for i in range(0, x):
if i == 2 or i == 5:
if time[i] == '/':
m += 1
else:
if time[i].isdigit():
m += 1
if j == x or m == x:
#避免时间数据不合法导致程序报错,即月份超过12,或某一月日期超过该月的最大天数
try:
finish = pd.to_datetime(time1)
print((finish - start).days)
except ValueError:
print('Error')
#当就j!=x&&m!=x时,数值类型不匹配,必然输出‘Error
else:
print('Error')
后话
如果小伙伴们有自己的看法或者建议都可以评论或者私信我