如何按指定次数重复执行函数?航班时间计算器循环实现问询
航班耗时计算器的循环执行与总耗时累加问题
我开发了一款航班耗时计算器,能计算单段航班的耗时,但现在需要支持多段航班的情况:重复询问每段航班的起降时间,最后累加总耗时。目前想到可以通过用户指定次数的循环来实现,但不清楚具体写法,还有两个疑问:
- 是否需要为用户每次输入的新时间分配新值?
- 如何存储之前的时间以与新时间累加?
以下是现有代码:
#Function that calculates time accumulated. def time_calc(take,land) : #Take off and landing time is split into two pieces. Tk =take[:2] Tk2 = take[2:] Ld = land[:2] Ld2 = land[2:] #The pieces of take off and landing time is converted into integers to perform math. int(Tk) int(Tk2) int(Ld) int(Ld2) #Conditions are created in order to calculate remaining time if Ld2 < Tk2: Lda = int(Ld) - 1 Ld2 = 60 Flight_time1 = int(Lda) - int(Tk) Flight_time2 = int(Ld2) - int(Tk2) #Final value is returned x = Flight_time1, "Hours", Flight_time2, "Minutes" return x else: Flight_time1 = int(Ld) - int(Tk) Flight_time2 = int(Ld2) - int(Tk2) #Final value is returned x = Flight_time1, "Hours", Flight_time2, "Minutes" return x #Initial function to receive input from the user and call on the calculator function to perform math def flight_form(): Take_off1 = input ("Please enter take off time:") Landing1 = input ("Please enter Landing time:") Mult = input ("Was there multiple flights?(True or False)") take = Take_off1 land = Landing1 bool(Mult) if Mult == True: flight_number = input ("How many?") int(flight_number) x = time_calc(take,land) print (x) else: x = time_calc(take,land) print (x) flight_form()
我考虑用for循环根据用户输入的航班次数重复执行函数,但不知道具体怎么写。
问题解答
针对你的疑问:
是否需要为每次输入的新时间分配新值?
需要。每次输入的起降时间都是独立的,要么用新变量存储,要么在循环中用同一变量覆盖旧值——旧的原始输入在计算完耗时后就不需要保留了。如何存储之前的时间并累加?
用两个变量分别累加总小时数和总分钟数,每次计算完单段航班的耗时后,把对应数值加到总变量里。最后统一处理分钟数超过60的进位情况(比如120分钟转成2小时)。
修改后的代码实现
# 计算单段航班耗时,返回小时和分钟的纯数值(方便累加) def time_calc(take, land): # 拆分起降时间并转成整数 take_hour = int(take[:2]) take_min = int(take[2:]) land_hour = int(land[:2]) land_min = int(land[2:]) # 计算单段航班耗时 if land_min < take_min: land_hour -= 1 land_min += 60 flight_hour = land_hour - take_hour flight_min = land_min - take_min return flight_hour, flight_min def flight_form(): total_hours = 0 total_mins = 0 # 处理第一段航班 take_off = input("请输入第一段航班的起飞时间(格式HHMM,比如1345):") landing = input("请输入第一段航班的降落时间(格式HHMM,比如1530):") hour, mins = time_calc(take_off, landing) total_hours += hour total_mins += mins # 询问是否有多段航班 has_multiple = input("是否有多段航班?(输入y/n):").lower() if has_multiple == 'y': flight_count = int(input("请输入总航班数(包括已输入的第一段):")) # 循环处理剩余航班 for i in range(1, flight_count): print(f"\n请输入第{i+1}段航班的信息:") take_off = input("起飞时间:") landing = input("降落时间:") hour, mins = time_calc(take_off, landing) total_hours += hour total_mins += mins # 处理分钟数进位 total_hours += total_mins // 60 total_mins = total_mins % 60 # 输出总耗时 print(f"\n总飞行耗时:{total_hours}小时{total_mins}分钟") flight_form()
关键修改说明:
- 调整
time_calc函数,返回纯数值的小时和分钟,去掉字符串描述,方便后续累加计算。 - 新增
total_hours和total_mins变量存储总耗时,每次计算单段航班后执行累加操作。 - 使用
for循环根据用户输入的总航班数,重复询问并计算每段航班的耗时。 - 最后处理分钟数超过60的情况,自动进位到小时,保证结果格式合理。
- 优化用户交互逻辑,用
y/n代替True/False,更符合日常使用习惯。
内容的提问来源于stack exchange,提问作者NovicePytech
相关产品推荐
相关产品推荐

