return True 在 Python 中停止循环?
问题描述
我仍然是初学者,但不知道为什么for 循环"中的return True"会在第一次通过后停止循环.如果我使用return"以外的其他东西,一切都很好.
I am still a beginner but does not know why the "return True" in a "for loop" stop the loop after the first pass. If I use something else than "return", everything is fine.
def roc_valid(self,cote_x,cote_y):
from graph_chess import board
p = board()
side=(side_x,side_y)
if side == (0,0):
for (x,y) in (0,1),(0,2),(0,3):
print(King.ok_to_move(self,x,y))
if p.getPiece(x,y)=="" and king.ok_to_move(self,x,y):
return True
解决方案
您可以使用 yield
语句.return
语句会停止函数并立即返回值,而 yield
语句将返回值并从离开的地方继续.
You can use the yield
statement. A return
statement stops the function and immediately and returns the value while yield
statement will return the value and but continues where it left.
if side == (0,0):
for (x,y) in (0,1),(0,2),(0,3):
print(King.ok_to_move(self,x,y))
if p.getPiece(x,y)=="" and king.ok_to_move(self,x,y):
yield True
现在使用:list(roc_valid(self,cote_x,cote_y))
获取所有返回值的列表,或者只是next(roc_valid(self,cote_x,cote_y))
code> 只获取第一个值.
Now use: list(roc_valid(self,cote_x,cote_y))
to get a list of all returned values or just next(roc_valid(self,cote_x,cote_y))
to get only the first value.
演示:
def func():
for i in xrange(5):
if i % 2:
yield True
...
>>> list(func()) #all returned values
[True, True]
>>> next(func()) #Just the first returned value
True
相关:Python yield
关键字解释
Related: The Python yield
keyword explained
相关文章