我正在尝试基于点数制作关卡系统,但代码有点太长了。如果你能帮我把它变小,我真的很感激。描述它应该做的是获得积分并查看他们处于什么级别,如果他们升级,它将告诉他们升级了多少次以及他们现在处于什么级别。我希望它上升到 100,并且在上升时更难升级。这是我目前所拥有的:
def pointLevel(name):
point = Point.dPoint[name]
points, lvl = int(point), int(lvl)
if points < 500:
lvl = 1
elif points < 1500:
lvl = 2
elif points < 2500:
lvl = 3
elif points < 5000:
lvl = 4
elif points < 10000:
lvl = 5
elif points < 15000:
lvl = 6
elif points < 20000:
lvl = 7
elif points < 30000:
lvl = 8
elif points < 50000:
lvl = 9
elif points < 100000:
lvl = 10
elif points < 250000:
lvl = 11
notes.store("levels", user.name, "You have leveled up. You are now level "+str(lvl)+"!", int(time.time()))
请您参考如下方法:
只是为了缩短您的代码,您可以将级别保存为列表,然后通过将点与级别拆分进行比较来计算用户通过了多少级别:
levels = [100, 200, 300, 400, 500]
lvl = len([x for x in levels if points > x])
我不担心这里的速度,但是使用生成器可以被认为是一种更好的做法(或者不是,在这种情况下是个人喜好问题):
lvl = sum(1 for x in levels if points > x)
