我不知道为什么我的'if'语句不起作用

时间:2019-02-10 15:56:16

标签: python

我正在尝试使用用户平衡系统制作游戏,但由于程序无法检查我的列表(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列表中并删除最后一个数字。

2 个答案:

答案 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']  

希望这对您有帮助。