0
turn = 0
をplay
関数内に配置しようとしました Stackoverflowでいくつかの同様の質問を読み、global turn
を関数の内部と外部に配置しようとしました。これらはエラーを投げなかっただけでなく、ターン制限にも至らなかった。どうして?どのようにこれを修正するための任意のアイデア?私の腸は、私がglobal
に変数turn
を設定しているので、私はそれが機能外に設定ですので、それは価値ですが、あなたはターンを取るように、反復数字を実行するために、私は」のturn=0
を参照し続けるつもりだと言っている反復グローバル変数がトリガされない==条件
間違っている。ここで
は私のコードです:私はグローバルを使用していないとき
from random import randint
board = []
for x in range(5):
board.append(["O"] * 5)
def print_board(board):
for row in board:
print " ".join(row)
print "Incredibly Simple Battleship!"
print_board(board)
def random_row(board):
return randint(0, len(board) - 1)
def random_col(board):
return randint(0, len(board[0]) - 1)
ship_row = random_row(board)
ship_col = random_col(board)
print ship_row #erase after testing
print ship_col
global turn
def play(guess_row,guess_col):
global turn
if guess_row == ship_row and guess_col == ship_col:
print "Congratulations! You sunk my battleship!"
else:
if turn == 4:
print "Game Over"
if guess_row not in range(5) or guess_col not in range(5):
print "Oops, that's not even in the ocean."
elif(board[guess_row][guess_col] == "X"):
print "You guessed that one already."
else:
print "You missed my battleship!"
board[guess_row][guess_col] = "X"
print_board(board)
print "Guess again:"
print "Turn ",turn,":"
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))
turn += 1
play(guess_row,guess_col)
turn=0
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))
play(guess_row,guess_col)
ここでは、元のエラーがあります:私はglobal
を使用しないようにアドバイスをしたいが、考え出していない
Traceback (most recent call last):
File "python", line 51, in <module>
File "python", line 30, in play
UnboundLocalError: local variable 'turn' referenced before assignment
NBまだ代替案を出している。
したがって、関数呼び出しで変数を渡し、関数(再)呼び出しで+1を渡して反復できますか?ブリリアント! – toonarmycaptain
なぜ私はうまくいっていないのですか? – toonarmycaptain
甘い、問題ありません。あなたの方法も使えますが、グローバルターンを2回定義します。あなたのコードで最初の "グローバルターン"を取り出し、あなたは良い(ゲームオーバー後にそのreturnステートメントを追加することを覚えておいてください)。 –