繁体   English   中英

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

[英]I don't know why my 'if' statement isn't working

我正在尝试使用用户等级系统制作游戏,但我遇到了问题,因为该程序不会检查我的列表(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 列表中并删除最后一个数字。

正如其他人所说,您不应该为此使用列表,而只是将 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)

这将返回 [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)

这将返回 ulvl 为 2。

我想我发现了错误。 当你执行你的代码时,会出现:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM