返回True是否在Python中停止循环? [英] return True stop the loop in Python?

查看:110
本文介绍了返回True是否在Python中停止循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我仍然是一个初学者,但是不知道为什么在"for循环"中返回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))仅获取第一个值.

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

这篇关于返回True是否在Python中停止循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆