You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按指定次数重复执行函数?航班时间计算器循环实现问询

航班耗时计算器的循环执行与总耗时累加问题

我开发了一款航班耗时计算器,能计算单段航班的耗时,但现在需要支持多段航班的情况:重复询问每段航班的起降时间,最后累加总耗时。目前想到可以通过用户指定次数的循环来实现,但不清楚具体写法,还有两个疑问:

  • 是否需要为用户每次输入的新时间分配新值?
  • 如何存储之前的时间以与新时间累加?

以下是现有代码:

#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循环根据用户输入的航班次数重复执行函数,但不知道具体怎么写。


问题解答

针对你的疑问:

  1. 是否需要为每次输入的新时间分配新值?
    需要。每次输入的起降时间都是独立的,要么用新变量存储,要么在循环中用同一变量覆盖旧值——旧的原始输入在计算完耗时后就不需要保留了。

  2. 如何存储之前的时间并累加?
    用两个变量分别累加总小时数和总分钟数,每次计算完单段航班的耗时后,把对应数值加到总变量里。最后统一处理分钟数超过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:53:13