函数在第一个元素之后停止迭代重载的json



我尝试着获得《军团要塞2》中玩家所拥有的每一项成就,并且我已经让它获得了成就,迭代它们,但现在没有了。这是函数和它运行的地方

Data.py

def resolveAchievements(ac):
_ac = json.loads(ac)
for achievement in _ac["playerstats"]["achievements"]:
print(achievement)
return acName.append(achievement["name"]), acDesc.append(achievement["description"]), acUnlock.append(achievement["achieved"])

Main.py

for a in acName:
addText(a)

和addText函数,如果需要的话:

def addText(t):
layout.append([
psg.Text(
text=t,
font=('Arial Bold', 14),
size=14,
expand_x=True,
justification='center'
)
])

它只打印第一个成就两次,然后显示None[]。下面是打印到终端的内容:

{'apiname': 'TF_PLAY_GAME_EVERYCLASS', 'achieved': 0, 'unlocktime': 0, 'name': 'Head of the Class', 'description': 'Play a complete round with every class.'}
{'apiname': 'TF_PLAY_GAME_EVERYCLASS', 'achieved': 0, 'unlocktime': 0, 'name': 'Head of the Class', 'description': 'Play a complete round with every class.'}
None []

我不知道发生了什么,但任何帮助是感激的!

您的return语句在循环中,因此您在第一次迭代后立即从函数返回(终止循环)。

我猜您只是想将值附加到三个单独的列表中,然后在循环完成后返回三个列表

def resolveAchievements(ac):
_ac = json.loads(ac)
acName = []
acDesc = []
acUnlock = []
for achievement in _ac["playerstats"]["achievements"]:
acName.append(achievement["name"])
acDesc.append(achievement["description"])
acUnlock.append(achievement["achieved"])
return acName, acDesc, acUnlock

最新更新