我有以下循环:
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
以同样的方式行事。
答案 0 :(得分:0)
经过多次压力之后,我发现了我的错误背后的简单原因,我正在为错过它而踢我自己......
我的循环应该做的是确保所有 neighbours
不在enemy_tiles
中。当然,它几乎每次都评估为真,因为第一个neighbour
检查的概率高于enemy_tiles
,因此该语句为真,并且tile_id
返回只检查一个neighbour
。