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)
改动说明:
- 用列表存储每行结果:避免频繁字符串拼接的性能损耗,也更易维护
enumerate遍历:自动生成从1开始的赛事序号,同时直接获取当前赛事的字典数据- 条件显示获胜者:仅当
gagnant不为None时才添加对应文本,匹配预期输出格式 - 遍历完成后返回:将所有行用换行符连接,确保输出全部赛事信息
测试运行结果
用你的测试用例执行后,会输出:
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
相关产品推荐
相关产品推荐

