0

呼び出されている action() モジュールの if ステートメントを介して、while ループ (while の繰り返しが True) の条件の変数を (repeat = False に変更し、while ループの条件を満たさないように) 変更したいwhile ループ自体の中で。コメントは、全体を通して私の意図を説明する必要があります。

注:これは、私が実際に作業しているより大きなコードの単純化されたバージョンです。うまくいけば、他の投稿で出くわしたような混乱を招くコードを追加せずに、要点を理解できるようにシンプルかつ明確にしたことを願っています。

# Defining the variables

repeat = True
class monster:
    hp = 5
class fighter:
    damage = 1

# Defining my action module

def action():
   monster.hp -= fighter.damage # Monster's hp decreases by fighter's damage
   print "Monster HP is %s" % monster.hp # Print this result
   if monster.hp < 1: # Check to see if monster is dead, hp less than 1
       repeat = False # If monster is dead, stop repeating
   else:
      repeat = True # If monster is not dead, repeat attack

# Here is the while loop

while repeat is True: # Defining the condition for the while loop
   print "repeat is %r" % repeat # Here it should print repeat is True
  action() # Then call the action module

print "repeat is %r" % repeat # Here it should print repeat is False
4

1 に答える 1

2

action() 内から変更するには、repeat をグローバル変数として宣言する必要があります。def action() の後に次の行を含めます。

def action():
    global repeat 
于 2013-08-27T23:43:19.077 に答える