このプログラムは、私のGCSEコンピュータサイエンス用のヘビとはしごプログラムです(心配しないでください、これは単なる練習です)。ループ内に存在する関数です。コードは次のとおりです。関数内にループwhile while while pythonを破ることができません
win = False
while win == False:
print("Player 1 goes first.")
def dice():
roll = random.randint(1,6)
return roll
roll = dice()
print("They roll a...",roll)
player1+=roll
def check():
if player1 in ladders or player2 in ladders:
print("A ladder has moved the player to a new position.")
elif player1 in snakes or player2 in snakes:
print("A snake has moved the player to a new position.")
elif player1 >= 36:
print("Congratulations. Player 1 has won the game.")
win = True
elif player2 >= 36:
print("Congratulations. Player 2 has won the game.")
win = True
check()
print("Player 1 is on square",player1)
これは明らかに完了していません。それはすべてのコードではありません。そのビットの後、それはplayer2でも同じです。プレイヤーがヘビやラダーに着陸したかどうかを調べるためにチェック機能がチェックするタプルがありますが、実際にプレーヤーをラダー/ヘビの上下に動かすコードは追加していません。
エラーは、whileループが無限ループであることです。
私はwin = FalseまたはTrueのものをTrueの間だけ変更してみましたが、breakを使用するとwin = Trueですが、明らかにブレークしていても 'outside outside loop'のエラーを返しますループ内。私は関数から何かを返す必要があるのかどうか疑問に思っていますが、それをどうやって行うのかは分かりません。 「return win」をwin = Trueの下に置くだけで何も変更されず、whileループは無期限に続きます。
答えはhereとhereですが、どちらもうまくいきませんでした。私の状況は少し違うと思います。
あなたの関数は最初にループ内にあるべきではありません。 –
ループ外でcheck()を定義し、whileループがある関数にwinを返します。 – wave5459