虽然Python中的循环没有成功

时间:2016-06-03 19:37:41

标签: python variables if-statement while-loop

所以我最近刚开始使用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...")    

(对不起,如果我犯了一个非常愚蠢的错误,正如我之前提到的那样,我对一般的编码很新。)

2 个答案:

答案 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行一样。