ボードゲームで座標(x、y)から(u、v)にピースを移動するためのmove(x、y、u、v)関数があります。Python:なぜwhileループ内で呼び出された関数は、単独で呼び出されたときとは異なる何かを返しますか?
some_Class():
def move(self, x, y, u, v):
self.x = x
self.y = y
self.u = u
self.v = v
if (conditions for possible move...):
return(some_function(self.x, self.y, self.u, self.v)) ## applies the move
else:
return("Move impossible. Try again.")
移動が可能な場合、関数はボード上の駒を移動し、移動が可能でないとき、それは「不可能移動」と言う文字列を返します。
def play()
a = input()
b = []
for i in a:
b.append(i)
return(move(b[0], b[1], b[2], b[3]))
と私はので、私は移動後の動きをしようとして続けることができます無限ループにそれを置く:
は私がseconde機能を作ったので、私の人生を簡素化するために、行うには多くのテストを持っています。
while True:
play()
全部が正常に動作して、作品はゲームのルールに従って移動され、すべてが移動が不可能であるとき、私は「移動不可能」のメッセージを取得しないことを除いて結構です。
私はplay()を(例えばシェルのwhileループの外で)呼び出し、不可能な移動を試みると、メッセージを受け取ります。
私はこれが非常に基本的なものだと確信していますが、私はどこでも答えを見つけることができませんでした。私はコードでエラーを見つけるためにこれらのメッセージが必要です。
明確でない場合の例を追加します。 (0,0)から(1,1)への移動が不可能であるとしましょう。
>>>play()
0011
'Move impossible. Try again.'
ケース2、(遊ぶ)ループ内:
ケース1、ループなし()プレイする動きが再生されない
while True:
play()
0011
0011
...
(作品は、その場所にとどまります)しかし、私はメッセージを取得しません。何故ですか?
EDIT:問題を解決しました。
print(play())
仕事が、私がしなければならなかったすべてはあなたが実行すると
return(print("Impossible move"))
代わりの
return("Impossible move")
はあなたに助け:)
[MCVE]を入力してください。 – TigerhawkT3
あなたのコードでは、「不可能な」移動を返す部分は見られませんか? –
条件が満たされない場合、関数moveは "不可能になります"を返します。このコードにもう1つの例を追加します – Peyolikepeyote