循环python的问题

时间:2012-09-26 05:04:49

标签: python loops while-loop

我正在尝试循环战斗菜单。虽然它尚未完成,但我遇到了问题。我想菜单一直循环直到myhp,或者hp低于0.所以我用“myhp> 0或hp> 0:”

它不起作用,我做错了什么?

def fightmode(name, hp, dmg, gold):
print '\n\n\nYou are in a fight with %s' %name
print '%s has %sHP' %(name, hp)
while myhp > 0 or hp > 0:
    hp = hp - mydmg
    print '\n\t1. Attack \n\t2. Guard \n\t3. Run away.'
    opt1= ''
    allowed = ["1", "2", "3"]
    while opt1 not in allowed:
        opt1 = raw_input("\nWhat will you do? ")
        if opt1 == "1":
            print "You have inflicted %d damage on %s. %s's HP is %s" %(mydmg, name, name, hp)
if myhp > 0 :
    print"myhp"
if hp > 0 :
    print"theirhp"

3 个答案:

答案 0 :(得分:2)

没关系,我想我明白了。我将“或”改为“和”,似乎它正在发挥作用。 这是正确的方法吗?

答案 1 :(得分:0)

现在,您需要myhphp才能使while循环继续运行。 因此,如果其中一个降为0并因此“变为假”,则另一个仍然是真的并保持循环。

那你怎么能这样做呢? (你已经猜对了......请改用and!)

因此while myhp > 0 or hp > 0:应为while myhp > 0 and hp > 0:(请注意or已与and交换!)

答案 2 :(得分:-1)

因为 while 循环,直到布尔表达式为 true 并且在表达式后停止 false

所以你需要写while myhp < 0 or hp < 0: