pandas的datetime练习——2007百度之星程序设计大赛百度时间

以下内容为本篇正文内容,可供参考

注:本题代码旨在为正在学习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')

后话 

如果小伙伴们有自己的看法或者建议都可以评论或者私信我

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...