TF2成就遍历异常:函数加载JSON后仅处理首个元素即停止
问题分析与修复
核心问题
你的代码仅能获取首个成就的原因是**resolveAchievements函数的return语句写在了for循环内部**,导致循环执行第一次迭代就直接返回,终止了后续的成就遍历。终端重复打印两次相同内容,说明这个函数被调用了两次,每次都只处理第一个成就。
修复代码
修改Data.py中的resolveAchievements函数,将return移出循环体,循环内仅完成列表追加操作:
def resolveAchievements(ac): _ac = json.loads(ac) # 清空列表避免重复添加(若函数可能被多次调用) acName.clear() acDesc.clear() acUnlock.clear() for achievement in _ac["playerstats"]["achievements"]: print(achievement) acName.append(achievement["name"]) acDesc.append(achievement["description"]) acUnlock.append(achievement["achieved"]) # 若需返回处理后的列表,可在此统一返回,否则无需return # return acName, acDesc, acUnlock
额外注意事项
- 检查
Main.py中调用resolveAchievements的逻辑,确保只调用一次,避免重复填充列表导致后续addText重复处理数据。 - 若
acName等为全局列表,函数开头的清空操作可防止多次调用时累积旧数据。
验证效果
修改后,函数会遍历所有成就并完成列表填充,Main.py中的for a in acName就能循环所有成就名称,通过addText生成完整的成就展示内容。
内容的提问来源于stack exchange,提问作者limegradient
相关产品推荐
相关产品推荐

