【发布时间】:2018-02-27 09:01:22
【问题描述】:
所以这背后的想法很简单(是的,这是一个练习而不是现实生活中的问题)
所以有一个女孩的时钟是假的,但她朋友的时钟总是正确的。所以当她离开家时,她记得她离开时钟的时间。在她的朋友那里,她看到了她到达和离开的时间,回到家后,她又看到了时间。这样,即使我们不知道她开了多长时间,我们也可以知道正确的时间。 例如,她在 6:32 离开她的地方,她在 14:14 和她的朋友一起到达,在 17:21 和她的朋友一起离开,并在 13:29 到家。
总时间是 6:57,其中她花了 3:07 和她的朋友在一起,其余时间除以 2,所以你知道 1 次汽车旅行的时间。
因此,如果您将此时间与您留在朋友家的时间相加,您会找到实际时间。
现在我之前已经解决了这个问题,但当时我不知道 datetime 函数,所以我想也许我可以这样解决它。我对日期时间的问题是,当午夜过去时,它被卡住了
例如,当她 9:04 离开家时,她在 6:15 到达朋友并在 14:54 离开并在 5:13 回家时,我知道正确的时间是 8:57,而应该是 20 :57。
也许它在我的 datetime.timedelta 中有些问题,但我不知道如何解决。
非常欢迎任何建议 非常感谢
我此刻的代码:
import datetime
# function nessesary to convert timedelta back into time
def convert_timedelta(duration):
days, seconds = duration.days, duration.seconds
hours = days * 24 + seconds // 3600
minutes = (seconds % 3600) // 60
seconds = (seconds % 60)
return hours, minutes, seconds
# input
hour_department_home = int(input("Hour of department at home: "))
minutes_department_home = int(input("Minutes of department at home: "))
hour_arrival_friend = int(input("Hour of arrivel friends house: "))
minutes_arrival_friend = int(input("Minutes of department friends house: "))
hour_department_friend = int(input("Hour of arrivel friends house: "))
minutes_department_friend = int(input("Minutes of arrivel friends house: "))
hour_arrival_home = int(input("Hour of arrivel home : "))
minutes_arrival_home = int(input("Minutes of arrivel home: "))
# putting into hours
department_home = datetime.time(hour_department_home,minutes_department_home,second=0)
arrival_friend = datetime.time(hour_arrival_friend,minutes_arrival_friend)
department_friend = datetime.time(hour_department_friend,minutes_department_friend)
arrival_home= datetime.time(hour_arrival_home,minutes_arrival_home)
# time at friends
uur_1,uur_2 = datetime.timedelta(hours=department_friend.hour),datetime.timedelta(hours = arrival_friend.hour)
hours_with_friend = uur_1-uur_2
min_1,min_2= datetime.timedelta(minutes=department_friend.minute),datetime.timedelta(minutes=arrival_friend.minute)
min_with_friend = min_1-min_2
total_time_with_friend = hours_with_friend + min_with_friend
# time away
uur_1h,uur_2h = datetime.timedelta(hours=arrival_home.hour),datetime.timedelta(hours = department_home.hour)
hours_away_from_home = uur_1h-uur_2h
min_1h,min_2h= datetime.timedelta(minutes=arrival_home.minute),datetime.timedelta(minutes=department_home.minute)
min_away_from_home = min_1h-min_2h
total_time_away = hours_away_from_home + min_away_from_home
duration_drive = (total_time_away-total_time_with_friend) /2
the_time = datetime.timedelta(hours=department_friend.hour,minutes=department_friend.minute) +duration_drive
hours, minutes, seconds = convert_timedelta(the_time)
print(hours)
print(minutes)
【问题讨论】:
-
你总是用
time提醒,你忘了date。 -
@Baduker 的评论:如果我错了,请纠正我,但这可能会有所帮助(和/或重复):Python format timedelta greater than 24 hours
-
@Baduker 感谢我之前看到这个的评论,但它并没有真正帮助我进一步