-2

我只是在学习如何使用 Python,并且在理解语法方面遇到了一个简单的问题。我的目标是编写一个检查每个相邻坐标的洪水函数……我的问题是,当我运行该函数时,如果 if 语句的第一行通过,它就会退出。我怎样才能让它检查每个 if 语句?

def flood(color_of_tile, flooded_list):
    for coord in flooded_list:
        if in_bounds(down(coord)):
            if color_of_tile[0,0] == color_of_tile[down(coord)]:
                flooded_list.append(down(coord))
        elif in_bounds(up(coord)):
            if color_of_tile[0,0] == color_of_tile[up(coord)]:
                flooded_list.append(up(coord))
        elif in_bounds(left(coord)):
            if color_of_tile[0,0] == color_of_tile[left(coord)]:
                flooded_list.append(left(coord))
        elif in_bounds(right(coord)):
            if color_of_tile[0,0] == color_of_tile[right(coord)]:
                flooded_list.append(right(coord))

谢谢!

4

2 回答 2

2

不要使用elif

def flood(color_of_tile, flooded_list):
    for coord in flooded_list:
        if in_bounds(down(coord)):
            if color_of_tile[0,0] == color_of_tile[down(coord)]:
                flooded_list.append(down(coord))
        if in_bounds(up(coord)):
            if color_of_tile[0,0] == color_of_tile[up(coord)]:
                flooded_list.append(up(coord))
        if in_bounds(left(coord)):
            if color_of_tile[0,0] == color_of_tile[left(coord)]:
                flooded_list.append(left(coord))
        if in_bounds(right(coord)):
            if color_of_tile[0,0] == color_of_tile[right(coord)]:
                flooded_list.append(right(coord))
于 2013-08-30T01:56:55.210 回答
0

程序冻结,因为在迭代中您附加到您正在迭代的列表中。

如果您想可视化正在发生的事情,请尝试以下操作:

x = [1]
for _ in x:
    x.append (x [-1] + 1)
    print (x)
于 2013-08-30T02:05:09.840 回答