Python 我不知道';我不知道为什么我的';如果';报表isn';行不通

Python 我不知道';我不知道为什么我的';如果';报表isn';行不通,python,Python,我试图用一个用户升级系统制作一个游戏,但我遇到了麻烦,因为程序不会检查我的列表(经验)是否有一定的值。为此,我使用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. p

我试图用一个用户升级系统制作一个游戏,但我遇到了麻烦,因为程序不会检查我的列表(经验)是否有一定的值。为此,我使用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=1来测试它是否真的有效。。。这不是。。。exp=1时,ulvl应更新为当前ulvl+1,并将其插入ulvl列表并删除最后一个数字。

正如其他人所说,您不应为此使用列表,只应将ulvl和exp保留为INT,但如果您有其他理由将其保留为列表,则以下内容将使您的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)
这将返回[2]的ulvl,但正如您所看到的,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)

这将返回2的ulvl。

我想我找到了错误。当您执行代码时,会出现以下情况:

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

希望这对您的错误有所帮助。

exp
是一个包含一个元素的列表,
“1”
是一个字符串。它们永远不可能相等。如果exp:中的“1”为“1”,则需要使用
进行检查,因为
exp
是一个列表。在@MichaelButscher的注释后面,您需要从使用的列表(索引0)中选择第一个元素。您可能根本不需要
ulvl
exp
的列表,只需要整数(没有
或括号):
ulvl=1
exp=0
如果exp==1: