小蓝手里有一份 20222022 年度自己的上班打卡记录文件,文件包含若干条打卡记录,每条记录的格式均为“yyyy-MM-dd HH:mm:ssyyyy-MM-dd HH:mm:ss”,即按照年-月-日 时:分:秒的形式记录着一个时间点(采用 2424 小时进制)。由于某些原因,这份文件中的时间记录并不是按照打卡的时间顺序记录的,而是被打乱了。但我们保证小蓝每次上班和下班时都会正常打卡,而且正好打卡一次,其它时候不会打卡。每一对相邻的上-下班打卡之间的时间就是小蓝本次的工作时长,例如文件内容如下的话:
2022-01-01 12:00:05 2022-01-02 00:20:05 2022-01-01 07:58:02 2022-01-01 16:01:35
表示文件中共包含了两段上下班记录,1)20222022-0101-0101 0707:5858:02∼202202∼2022-0101-0101 1212:0000:0505,工作时长为 1452314523 秒;2)20222022-0101-0101 1616:0101:35∼202235∼2022-0101-0202 0000:2020:0505,工作时长为 2991029910 秒;工作时长一共是 14523+29910=4443314523+29910=44433 秒。现在小蓝想知道在 20222022 年度自己的工作时长一共是多少秒?
datas = [] up = [] out = [] daytime = 24*60*60 worktime = 0 while True: data = input() if not data: break datas.append(''.join([data[2:4],data[5:7],data[8:10],data[11:13],data[14:16],data[17:19]])) datas.sort() for i, c in enumerate(datas): if i%2 == 0: up.append(c) else: out.append(c) for num in range(len(up)): days = int(out[num][0:6]) - int(up[num][0:6]) uptime = int(up[num][6:8]) * 60 * 60 + int(up[num][8:10]) * 60 + int(up[num][10:12]) outtime = int(out[num][6:8]) * 60 * 60 + int(out[num][8:10]) * 60 + int(out[num][10:12]) timesum = days*daytime - uptime + outtime worktime += timesum print(worktime)
数据集:labfile.oss.aliyuncs.com/courses/21074/records.txt
答案:5101913