我正在尝试使用用户平衡系统制作游戏,但由于程序无法检查我的列表(exp(体验))是否具有特定值,因此遇到了麻烦。为此,我使用了if语句,因为如果exp = 1,我需要程序更新其他列表:
from random import*
import random
ulvl = ["1"]
exp = ["0"]
f = randint(1, 1)
print("f = ", f)
exp.clear()
exp.insert(0, f)
print("you currently have", exp, "exp. point(s)")
if exp == "1":
ulvl = ulvl+1
ulvl.clear()
ulvl.insert(ulvl)
else:
print("u broke it")
print(ulvl)
ulvl =用户级别,f =从战斗中获得的经验。 我已经使f always = 1来测试它是否确实有效...这不是...当exp = 1时,ulvl应该更新到当前的ulvl + 1并将其插入ulvl列表中并删除最后一个数字。
答案 0 :(得分:1)
正如其他人所说,您不应为此使用列表,而只是将ulvl和exp保留为整数,但是如果您还有其他理由将它们保留为列表,则以下内容将使您的if语句起作用。
if exp == [1]:
尽管如此,您却遇到了其他问题,
ulvl = ulvl+1
所以我认为这将以您当前的形式起作用
from random import*
import random
ulvl = ["1"]
exp = ["0"]
f = randint(1, 1)
print("f = ", f)
exp.clear()
exp.insert(0, f)
print("you currently have", exp, "exp. point(s)")
if exp == [1]:
ulvlnew = 2
ulvl.clear()
ulvl.insert(0, ulvlnew)
else:
print("u broke it")
print(ulvl)
这将返回ulvl [2],但是您可以看到2是硬编码的,因为您使用的是列表,实际上是在限制自己。
您真正应该做的就是这个。
ulvl = 1
exp = 1
print("you currently have", exp, "exp. point(s)")
if exp == 1:
ulvl = ulvl + 1
else:
print("u broke it")
print(ulvl)
这将返回ulvl 2。
答案 1 :(得分:0)
我认为我发现了错误。当您执行代码时,将显示:
f = 1
you currently have [1] exp. point(s)
u broke it
['1']
当我删除exp.clear()时,结果如下:
f = 1
you currently have [1, '0'] exp. point(s)
u broke it
['1']
希望这对您有帮助。