所以我最近刚开始使用python并尝试在代码中使用while循环,但是当我单击运行时,程序只运行而不打印任何内容。我做了一些关于while循环的研究,但我没有找到任何可以帮助我的东西。以下是完整的代码:
import random
HeroHP = random.randint(120 , 120)
WitchHP = random.randint(100 , 100)
Alive = 1
Dead = 0
if WitchHP > 0:
WitchStatus = Alive
if WitchHP < 1:
WitchStatus = Dead
if HeroHP > 0:
HeroStatus = Alive
if HeroHP < 1:
HeroStatus = Dead
HeroCritChance = random.randint(0 , 2)
if HeroCritChance == 2:
HeroATK = 25
if HeroCritChance == 0 or FriskCritChance == 1:
HeroATK = 10
WitchHitChance = random.randint(0 , 1)
if WitchHitChance == 0:
WitchATK = 30
if WitchHitChance == 1:
WitchATK = 0
while WitchStatus == Alive and HeroStatus == Alive:
WitchHP = WitchHP - HeroATK
HeroHP = HeroHP - WitchATK
if WitchStatus == Alive and HeroStatus == Dead:
print ("the Hero has been defeated...")
if WitchStatus == Dead and HeroStatus == Alive:
print ("the Hero has triumphed!")
if WitchStatus == Dead and HeroStatus == Dead:
print ("Peace has returned... But at a price...")
(对不起,如果我犯了一个非常愚蠢的错误,正如我之前提到的那样,我对一般的编码很新。)
答案 0 :(得分:2)
在Python中,赋值操作不起作用。
看起来像你写的时候:
if WitchHP > 0:
WitchStatus = Alive
您认为在未来条件中使用WitchStatus
它会实际检查WitchHP
的值。但事实并非如此,它确实存在:首先它评估条件,然后如果这是真的,它就会分配给WitchStatus
。如果那时,WitchHP
的值发生变化,WitchStatus
将不会更改,除非您再次运行此语句。
你想要的是一个功能:
def WitchStatus():
if WitchHP > 0:
return Alive
else:
return Dead
while WitchStatus() == Alive:
WitchHP = WitchHP - HeroATK
然后,每次使用WitchStatus()
函数时,程序都会再次检查条件。
答案 1 :(得分:0)
改变这个:
while WitchStatus == Alive and HeroStatus == Alive:
WitchHP = WitchHP - HeroATK
HeroHP = HeroHP - WitchATK
致if语句:
if WitchStatus == Alive.....
在原版中,一旦WitchStatus == Alive,它将保持这种状态并且循环将继续运行,因为没有任何东西可以改变它。这就像忘记在数字计算的循环中添加i = i + 1行一样。