Python(V2.7)では、私はコンピュータプレーヤーに対してConnectFourゲームを作ろうとしています。私は4行を見つけて(ゲームの終わりを判断するための)シンプルな関数を試して、TRUEを返すようになりました。そして今、同じ関数を使って3行を探し出し、その位置を返します。Python:関数返りboolと整数タプル
私が入ることができるdef finder(matrix, player,number):
for row in matrix:
count = 0
for item in row:
if item == player:
count +=1
if count == number:
return True
else:
count = 0
:ファインダー(ボード、「X」、4)行の4がTRUEであるか、まだデフォルトFALSEで(これは仕事をして)かどうかを知ります。今、私はこのような何かを試してみたい:
def finder(matrix, player,number):
for row in matrix:
count = 0
for item in row:
if item == player:
count +=1
if count == number:
return True
location = row, item
return location
else:
count = 0
は、しかし、これは私が場所を初期化していないエラーを呼び出すので、私はそれから場所= 0、0は今、それだけでTRUEを返し、タプル(0を設定し、 0)。 3の最後の要素の位置を連続して与えるにはどうすればよいですか?
編集:私は3タプルを返そうとしました:TRUE、行、アイテム。しかし、問題の2番目の部分は、関数がTRUEのときに行番号と列番号を取得する方法です。次のコードは、脅威が存在することを認識するように動作しますが、脅威が存在する場合、脅威の場所を取得する方法を見つけることができません。
if finder(board, "X", 3) is True:
horizontal_threat = True
print row, item
ようにしなければならないとタプル(0,0) "_。それは私にとって可能な音ではありません。関数は2回返すことはできません。あなたの関数が 'return true'に達すると、直ちに終了し、' return location'に到達することなく 'true'を呼び出しコンテキストに渡します。あなたの主張している行動を示す[mcve]を提供できますか? – Kevin
_ "私は次のように入力することができます:行の4つが真であるかどうかを知るためのfinder(board、" X "、4)。あなたはreturn文を打つことがなければ、あなたの関数がデフォルトで 'False'を返すと言っていますか?関数がreturn文を打ち切らずに終了すると、FalseではなくNoneを返します。公正では、誰も[虚偽]です(https://stackoverflow.com/questions/39983695/what-is-truthy-and-falsy-in-python-how-is-it-different-from-true-and-false )ので、いくつかのコンテキストでは同じように動作しますが、通常、すべてのコードパスがブール値を返すと予想される場合は、Falseを明示的に返すのが最善です。 – Kevin
私は関数が1つの値しか返すことができないことに気づいていなかった、私はプログラムの始めにlocation = 0,0を設定した。今私は変数を私がしばらく前に呼んでいることを知っています。 – Ra31513