if语句总是被计算为true,即使它是假的

时间:2016-01-12 19:33:23

标签: python python-3.x if-statement

我有以下循环:

    for tile_id, tile in corner_tiles.items():
        for neighbour in tile["neighbours"]:
            if not (neighbour in enemy_tiles) and tile["player"] == None:
                return tile_id

其中: tile

形式的字典
{'counters': <number of counters on tile or None>, 
 'player': <player id of the player who holds the tile or None>,
 'neighbours': <list of ids of neighbouring tile>
}

corner_tiles以及enemy_tiles{<tile_id> : <tile>, ... }形式的字典。

无论tile_id是否在neighbour内,循环始终都会返回enemy_tiles,但如果tile["player"]不是None则不会。我一直试图解决这个问题很长一段时间但似乎无法发现我出错的地方。

编辑:

我也尝试过:

for tile_id, tile in corner_tiles.items():
    if tile["player"] is None:
        for neighbour in tile["neighbours"]:
            if neighbour not in enemy_tiles:
                return tile_id

以同样的方式行事。

1 个答案:

答案 0 :(得分:0)

经过多次压力之后,我发现了我的错误背后的简单原因,我正在为错过它而踢我自己......

我的循环应该做的是确保所有 neighbours不在enemy_tiles中。当然,它几乎每次都评估为真,因为第一个neighbour检查的概率高于enemy_tiles,因此该语句为真,并且tile_id返回只检查一个neighbour