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