Return True Stop The Loop In Python?
Solution 1:
return statement is to return a value from a function. So, if you use return the control will be transferred to the calling function.
If you want to break out of the loop, you need to use break statement.
For example,
def tempFunc1():
i = 1return i
print "leaving tempFunc1"print tempFunc1()
It prints just 1. It doesnt print leaving tempFunc1 because, the function has returned to the caller before executing the print "leaving tempFunc1" statement.
Solution 2:
If you want to return True, but still keep looping, you may need a pattern like this. I'm calling the variable retval but you can call it anything that makes sense
defroc_valid(self,cote_x,cote_y):
from graph_chess import board
p = board()
side=(side_x,side_y)
retval = Falseif 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):
retval = Truereturn retval
Solution 3:
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):
yieldTrueNow 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.
Demo:
deffunc():
for i in xrange(5):
if i % 2:
yieldTrue... >>> list(func()) #all returned values
[True, True]
>>> next(func()) #Just the first returned valueTrueRelated: The Python yield keyword explained
Post a Comment for "Return True Stop The Loop In Python?"