2

バトルメニューをループしようとしています。まだ完成していませんが、ループするのに問題があります。myhp または hp が 0 未満になるまでメニューをループし続けたいので、「while myhp > 0 or 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"
4

3 に答える 3

2

気にしないで、私はそれを手に入れたと思います。「または」を「および」に変更したところ、機能しているようです。これは正しい方法でしたか?

于 2012-09-26T05:06:48.433 に答える
0

現時点では、while ループを続行するには、 myhpORhpが true である必要があります。そのため、そのうちの 1 つが 0 に落ちて「False」になった場合でも、もう 1 つが true になり、ループが続行されます。

では、どうすればそれについて何かできるでしょうか?? (あなたはすでに正しいと推測しています...and代わりに使用してください!)

そうwhile myhp > 0 or hp > 0:あるべきです(が と交換されwhile myhp > 0 and hp > 0:ていることに注意してください!)orand

于 2012-09-26T06:16:47.213 に答える
-1

whileループはブール式がtrueになるまでロッピングし、式がfalseになると停止するため

だからあなたは書く必要がありますwhile myhp < 0 or hp < 0:

于 2012-09-26T05:44:06.623 に答える