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

如何实现jogging_average函数提取含jogging字符串的parse_time与parse_dist结果

代码实现

1 前置修正

你原有getDigits函数仅提取纯数字,会丢失距离值的小数点,导致距离解析错误,先调整逻辑:

def getDigits(s):
    answer = []
    for char in s.split(";"):
        k = ""
        for split_s in char:
            # 保留数字和小数点,适配带小数的距离值
            if split_s.isdigit() or split_s == '.':
                k += split_s
        if k:
            answer.append(k)
    return answer

原有parse_dist返回的是带km后缀的字符串,如果需要做总距离计算,建议调整为返回数值类型,可按需选择:

# 原逻辑返回带单位字符串
def parse_dist(s):
    l = getDigits(s)
    return l[1]+ 'km'

# 调整为返回浮点数值,方便后续计算
def parse_dist_num(s):
    l = getDigits(s)
    return float(l[1])

2 实现jogging_average函数

下面提供两种常用实现,按需选用:

版本1:返回所有jogging记录的解析结果列表

每个元素为(时长秒数,距离)的元组:

def jogging_average(activities: list[str]):
    res = []
    for act in activities:
        # 筛选jogging类活动
        if 'jogging' in act:
            time_val = parse_time(act)
            dist_val = parse_dist(act)
            res.append((time_val, dist_val))
    return res

用你给的示例activities运行,返回结果为:
[(2411, '6km'), (2185, '5.3km')]
对应两条jogging记录:40分11秒=2411秒、36分25秒=2185秒

版本2:返回累计总时长、总距离、平均配速

更贴合实际使用场景:

def jogging_average(activities: list[str]):
    total_time = 0
    total_dist = 0
    for act in activities:
        if 'jogging' in act:
            total_time += parse_time(act)
            # 这里用调整后的数值版parse_dist_num
            total_dist += parse_dist_num(act)
    # 平均配速:分钟/公里,总时间转分钟除以总距离
    avg_pace = (total_time / 60) / total_dist if total_dist !=0 else 0
    return {
        '总时长(秒)': total_time,
        '总距离(km)': total_dist,
        '平均配速(分/公里)': round(avg_pace, 2)
    }

示例运行返回结果:
{'总时长(秒)': 4596, '总距离(km)': 11.3, '平均配速(分/公里)': 6.78}


内容的提问来源于stack exchange,提问作者Bruffff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:02