如何使用Python來計算公交發(fā)車時間
問題描述:
公交車每天會按照一定間隔發(fā)車,由于不同時間段經過擁堵路段的用時不-樣,所以給定路線下公交車每趟(每車次)行駛時間差異也很大,現在給出某路線某天各車次公交車離開始發(fā)站和到達終點站的時間,請求出該天耗時最長車次的行駛時間。
輸入說明:
第- -行是一個整數N,示接下來的公交車車次的總數。之后是N行,每行開始是字母S或Z,表示是從始發(fā)站開出還是終點站開出。之后兩個時間表示起始時間,時間給出方式為小時+分鐘的形式,如S 0830 1210表示8點30分離開始發(fā)站,12點10分達到終點站。
輸出說明:
耗時最長的車次的行駛時間,比如耗時最長車輛的始發(fā)時間是0830到1025,那么輸出1H55M。
解決方案:
通過題目我們可以發(fā)現題目的本意是求兩點之間的時間,所以首先應該思考如何在題目給的格式下計算時間差,我們可以將時間分成兩部分分開計算,利用取整和取余算出時間傳入一個新列表然后找出最大最小輸出
進行格式的處理方便計算
N = int(input()) list2 = [] while N>0: list1 = list(map(str,input().split()))
計算時間
a = (abs(int(list1[1])//100-int(list1[2])//100))*60 b = int(list1[2])%100-int(list1[1])%100
求出最大最小并輸出
c = max(list2) d = min(list2) print('%dH%dM' % (c//60,c-(c//60)*60))
完整代碼如下
N = int(input())
list2 = []
while N>0:
list1 = list(map(str,input().split()))
a = (abs(int(list1[1])//100-int(list1[2])//100))*60
b = int(list1[2])%100-int(list1[1])%100
list2.append(a+b)
N-=1
c = max(list2)
d = min(list2)
print('%dH%dM' % (c//60,c-(c//60)*60))
最后,遇到這種題我們應該冷靜思考,抓住題的本意,尋找規(guī)律,總能解決問題。
好啦!今天的分享到這里就結束了,希望大家持續(xù)關注馬哥教育官網!版權聲明:轉載文章來自公開網絡,版權歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯(lián)系刪除或授權事宜。