航班时间
Posted 算法与编程之美
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了航班时间相关的知识,希望对你有一定的参考价值。
1 问题描述
对于一个可能跨时区的航班,给定来回程的起降时间。假设飞机来回飞行时间相同,求飞机的飞行时间。每组输入包含两行,第一行为去程的起降时间,第二行为回程的起降时间。(保证输入时间合法)
输入格式为:
h1:m1:s1 h2:m2:s2
h1:m1:s1 h2:m2:s2 (+1)
h1:m1:s1 h2:m2:s1 (+2)
输出格式为:
hh:mm:ss
2 解决方法
对输入的显示时间的字符串进行处理,即将表示时分秒的部分提取出来,求出两个时间差,再平均一下.假设时差是x,耗时为t,去和回的时间分别是t+x和t-x,所以两次时间差相加再除以2就是耗时t。
3 实验结果与讨论
通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。
代码清单 1
def get_time(): strs=input().split() h1=int(strs[0][0:2]) m1=int(strs[0][3:5]) s1=int(strs[0][6:8]) h2 = int(strs[1][0:2]) # 将时,分,秒提取出来,转换为整型,方便后期计算 m2=int(strs[1][3:5]) s2=int(strs[1][6:8]) day=0 if len(strs)==3: day=int(strs[2][2]) # 如果是次日到达,则需要加一天. t1=(h1*3600)+(m1*60)+(s1) t2=(h2*3600)+(m2*60)+(s2) # 全部转换成为秒,直接相减就是一趟旅行耗费时间 time=t2-t1+day*24*3600 return time n=int(input()) for i in range(n): ans=(get_time()+get_time())//2 s=ans m=s//60 h=m//60 ss=s%60 mm=m%60 hh=h%24 print("%02d:%02d:%02d"% (hh,mm,ss)) #当时间为一位数时,要补齐前导零。如三小时四分五秒应写 03:04:05。 |
4 结语
针对航班时间问题,提出直接将时间显示中的时分秒部分提取出来,全部转为秒再进行运算的方法,通过输入数据测试,证明该方法是有效的,本文的方法输入输出太多且较为复杂,未来可以探究能否利用time或者datetime更快速简洁地对问题求解。
稿件来源:深度学习与文旅应用实验室(DLETA)
作者:陈相君
实习编辑:衡辉
以上是关于航班时间的主要内容,如果未能解决你的问题,请参考以下文章
假定我们要建立一个航空数据库,存储如下信息: •每个机场有机场编号所在城市; •每个航班有航班编号起飞时间飞行时间; •飞机有飞机编号型号载客人数; •飞行员有飞行员编号姓名;