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

Python函数formater_les_parties无法遍历输出所有赛事元素求助

问题:Python赛事数据格式化函数遍历输出问题

我编写了如下Python函数formater_les_parties用于格式化赛事数据:

def formater_les_parties(parties):
    from datetime import datetime
    i =  f'{(len(parties[:-1]))} : {parties[0].get("date")},  {parties[0].get("joueurs")[0]} {"vs"} {parties[0].get("joueurs")[1]}, {"gagnant"}: {parties[0].get("gagnant")} \n'
    for w in range((len(parties))):
        i += str(w)
        return i

测试用例如下:

test1 = formater_les_parties([
    {
        "id": "5559cafd-6966-4465-af6f-67a784016b41",
        "date": "2022-09-23 11:58:20",
        "joueurs": ["IDUL", "automate"],
        "gagnant": None
    },
    # 省略其他赛事数据
    {
        "id": "80a0a0d2-059d-4539-9d53-78b3f6045943",
        "date": "2022-09-24 14:23:59",
        "joueurs": ["IDUL", "automate"],
        "gagnant": "automate"
    }
])
print(test1)

当前运行结果:

1 : 2022-09-23 11:58:20,  IDUL vs automate, gagnant: None 
0

预期输出:

1 : 2022-09-23 11:58:20, IDUL vs automate
...
20: 2022-09-24 14:23:59, IDUL vs automate, gagnant: automate

我尝试给所有赛事添加序号,但不知道如何实现遍历输出所有赛事元素,请求帮助。


解决方案

原函数存在几个核心问题:

  • 硬编码拼接首个赛事数据,未遍历所有元素
  • 循环内直接return导致仅执行一次就退出
  • 序号计算逻辑错误(len(parties[:-1])并非单场赛事的序号)
  • 无论gagnant是否为None都强制显示该字段,不符合预期格式

修正后的函数如下:

def formater_les_parties(parties):
    result = []
    # 用enumerate从1开始遍历,同时获取序号和对应赛事数据
    for idx, partie in enumerate(parties, start=1):
        date = partie.get("date")
        joueur1, joueur2 = partie.get("joueurs", ["", ""])
        gagnant = partie.get("gagnant")
        
        # 构建基础行文本
        line = f"{idx} : {date}, {joueur1} vs {joueur2}"
        # 仅当获胜者存在时,追加获胜者信息
        if gagnant is not None:
            line += f", gagnant: {gagnant}"
        result.append(line)
    
    # 将所有行用换行符连接后返回
    return "\n".join(result)

改动说明:

  1. 用列表存储每行结果:避免频繁字符串拼接的性能损耗,也更易维护
  2. enumerate遍历:自动生成从1开始的赛事序号,同时直接获取当前赛事的字典数据
  3. 条件显示获胜者:仅当gagnant不为None时才添加对应文本,匹配预期输出格式
  4. 遍历完成后返回:将所有行用换行符连接,确保输出全部赛事信息

测试运行结果

用你的测试用例执行后,会输出:

1 : 2022-09-23 11:58:20, IDUL vs automate
...
20 : 2022-09-24 14:23:59, IDUL vs automate, gagnant: automate

内容的提问来源于stack exchange,提问作者Henri Charles Élie N'dri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:05:55