如何通过将时间24 小时添加到剩余时间来显示我的目的地?

问题描述

所以我必须为课程制作一个程序,让用户输入时间(小时和分钟部分),还剩多少英里,以及他们的英里/小时,然后它必须输出当前时间 00:00,旅行还剩_小时_分钟,那么他们什么时候到达目的地 00:00

我们的程序中只能使用 input、int、round、str、format。到目前为止,我有

print("Welcome to the travel advisor program.")

hour = int(input("Enter current time,the hours part,using a 24-hour format: "))
num = int(input("Enter current time,the minutes part: "))
minute =format(num,"02d")
miles = int(input("Enter distance to destination in miles: "))
mph = int(input("Enter speed in miles/hour: "))

time_travel_hour = (miles // mph)
time_t = (miles / mph)
travel_time_minute = round((time_t - time_travel_hour) * 60)
clock_format = str(time_travel_hour) + str(":") + str(travel_time_minute)
current = str(hour) + str(":") + str(minute)

print("\n")
print("Here is your trip report")
print("Current time is " + str(current))
print("distance to destination is " + str(miles) + " miles")
print("Travel speed is " + str(mph) + " miles/hour")
print("Travel time remaining:",time_travel_hour," hours and",travel_time_minute,"minutes")

我尝试将小时和旅行时间小时相加,效果很好,但是当我将 num (minute) 和 travel_time_minute 相加时,它一直超过 60,所以它不会进入小时。

解决方法

通常,在解决此类问题时,以一个单位来思考要容易得多。在处理时间时,单个单位通常是秒,但在这种情况下,它可以很容易地是分钟。一旦您获得用户的输入,如果您需要解决的所有问题都在几分钟内完成,那么数学就足够简单了。从那里开始,这只是一个演示问题。计算机很容易想到“120 分钟”,但向用户显示时,他们希望看到“2 小时 0 分钟”

# Replacing the input calls here with direct input so the results are
# easily reproducible,it makes discussion about the problem easier on Stack Overflow

print("Welcome to the travel advisor program.")

hour = 12 # int(input("Enter current time,the hours part,using a 24-hour format: "))
mins = 34 # int(input("Enter current time,the minutes part: "))

miles = 150 # int(input("Enter distance to destination in miles: "))
mph = 60 # int(input("Enter speed in miles/hour: "))

# Time in minutes,this makes some of the calculations easier
travel_time = round(miles / mph * 60)

print("\n")

print("Here is your trip report")
# Show what the user input
print(f"Current time: {hour}:{mins:02d}")
print(f"Distance to destination is {miles} miles")
print(f"Travel speed is {mph} miles/hour")

# Show the travel time.  travel_time is in minutes,but present it to the user
# in terms of hours and minutes
# 'travel_time // 60' divides the current time by 60,and drops the fractional part
# 'travel_time % 60' uses the modulo operator,meaning we return the remainder from the division
print(f"Travel time remaining: {travel_time // 60} hours and {travel_time % 60} minutes")
# Outputs: Travel time remaining: 2 hours and 30 minutes

# And calculate the eta,use the same logic as the travel_time,which
# means thinking in number of minutes since the start of the day
# The '% 24' here lets us "loop" around in case the eta goes beyond the
# 24 hours in a day.  This is just to present the user a valid "wall clock" time,# and may or may not be desired.
eta = hour * 60 + mins + travel_time
print(f"ETA is {(eta // 60) % 24}:{eta % 60:02d}")
# Outputs: ETA is 15:04