我有第一个函数move(x,y,u,v),用于在棋盘游戏中将棋子从坐标(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.")
当移动是可能的,该函数将移动电路板上的片和当移动是不可能的,它返回一个字符串,表示“移动不可能”。
我有很多的测试要做,所以简化了我的生活我做了一个功能Seconde系列:
def play()
a = input()
b = []
for i in a:
b.append(i)
return(move(b[0], b[1], b[2], b[3]))
,我把它放在一个无限循环,这样我就可以不断尝试移动后的举动。
while True:
play()
整件事正常工作,棋子按照游戏规则感动,一切都很好,只是当移动是不可能的我不明白“移动不可能”的消息。
如果我自己调用play()(在while循环之外,例如在shell中),并尝试一个不可能的动作,我确实收到了这条消息。
我很确定这是非常基本的东西,但我无法找到答案的任何地方,我需要这些消息,因为我用它们来定位代码中的错误。
如果不清楚,我会添加一个示例。假设从(0,0)移动到(1,1)是不可能的。
案例1,播放(),而不循环:
>>>play()
0011
'Move impossible. Try again.'
案例2中,打()在一个循环内:
while True:
play()
0011
0011
...
此举不播放(片停留在其位置),但我没有收到消息。这是为什么?
编辑:问题解决了。
print(play())
没有工作,但我不得不这样做是
return(print("Impossible move"))
,而不是
return("Impossible move")
谢谢大家的帮助:)
请提供[MCVE]。 – TigerhawkT3
但是在你的代码中,我没有看到返回“”不可能“的部分? –
当条件不满足时,功能移动返回“移动不可能”。我会为这个添加一个例子 – Peyolikepeyote