如何调用字典中的下一个值?



我用了字典

LEVEL_XP = {
0: 0,
1: 5,
2: 13,
3: 20
}

和代码

new_level = int(level)
for level_on, xp_needed in LEVEL_XP.items():
i = LEVEL_XP[xp_needed]
if 0 <= i:
if xp != i:
print('nothing')
break
else:
new_level = int(level_on) + 1
print('level up')
break
else:
new_level = int(level)
break

我可以从数据库调用levelxp,它工作得很好。问题是在我达到13xp后,我没有升级到2及其打印nothing。我发现xp_needed只调用0的原因,这是字典中的第一个值。我怎么能让代码考虑下一个值是13在字典当我是1级别?如果我喜欢将整个xp擦除为0并重新启动1级别,该怎么办?因此代码需要将13称为xp_needed,而不是5?

如何让代码考虑下一个值…

?

使用下面的while循环。它利用了经验值随等级的单调性。我们可以非常有效地探测每个[level + 1]元素,不必去拜访"tons"你提到的水平。我们只检查可能相关的水平。

class Character:
def __init__(self, level=0, xp=0):
self.level = level
self.xp = xp
def __str__(self):
return f'<Character: level {self.level}, xp {self.xp}>'
def adjust_to_increased_experience(self, new_xp):
assert new_xp >= self.xp
assert new_xp >= LEVEL_XP[self.level]
while LEVEL_XP.get(self.level + 1, math.inf) <= new_xp:
self.level += 1
self.xp = new_xp

相关内容

最新更新