我正在尝试循环战斗菜单。虽然它尚未完成,但我遇到了问题。我想菜单一直循环直到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"
答案 0 :(得分:2)
答案 1 :(得分:0)
现在,您需要myhp
或hp
才能使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: