从for循环中的if开关返回

时间:2016-08-28 12:47:46

标签: python

我试图制作一个简单的游戏(对于树莓派Sense HAT),这个代码块检查一个像素是否被阻挡,这样玩家就无法行走。

def whitelist(x,y):
    for e in range(len(blacklist)):
        item = blacklist[e]
        cur_x = item[0]
        cur_y = item[1]
        if x == cur_x and y == cur_y:
            return True
    return False

这段代码产生了我想要的相反结果(我只能在地面内行走)。切换TrueFalse行可以正常工作,但有人可以解释一下原因吗?使用不在黑名单中的坐标(0,5)的代码在我看来并不像它应该正常工作,但确实如此。

1 个答案:

答案 0 :(得分:1)

首先让我们更简单:

def whitelist(x,y):
    for cur_x, cur_y in blacklist:
        if x == cur_x and y == cur_y:
            return True
    return False

更简单:

(x, y) in blacklist

当且仅当(x,y)在黑名单中时才返回。