0

我只是想问你一个基于在python中构建迷宫的学校练习。我们从一个已知的 (x,y) 点和 n*n 图开始。在每次递归中,我们应该为每一对 (x,y) 创建一个 neighbouring_list,其中将包含该点的最近元素。到目前为止,我已经编写了显示正确结果的代码,但我无法保存和操作从相邻列表中选择的新 x 和 y。它们的执行方式类似于 (8,8),我无法写出 x = 8 和 y = 8。你知道吗?先感谢您!

if(x and y == 0):
    neighbouring_list = [((x + 1), y), (x, (y + 1))]
elif (x == (n - 1) and y == 0):
    neighbouring_list = [((x - 1), y), (x, (y + 1))]
elif (y == 0):
    neighbouring_list = [((x + 1), y), ((x - 1), y), (x, (y + 1))]
elif (y == (n - 1) and x == 0):
    neighbouring_list = [(x, (y - 1)), ((x + 1), y)]
elif (x == 0):
    neighbouring_list = [(x, (y + 1)), (x, (y - 1)), ((x + 1), y)]
elif (x == (n - 1) and y == (n - 1)):
    neighbouring_list = [(x, (y - 1)), ((x - 1), y)]
elif (x == (n - 1)):
    neighbouring_list = [((x - 1), y), (x, (y + 1)), (x, (y - 1))]
elif (y == (n - 1)):
    neighbouring_list = [(x, (y - 1)), ((x - 1), y), ((x + 1), y)]
else:
    neighbouring_list = [((x - 1), y), ((x + 1), y), (x, (y + 1)), (x, (y -         1))]
4

1 回答 1

2

这是您的代码的一个更简单的版本:

nlist = []
if x < n:
    nlist.append((x+1,y))
if y < n:
    nlist.append((x,y+1))
if x > 0:
    nlist.append((x-1,y))
if y > 0:
    nlist.append((x,y-1))

这应该更容易管理。

要将元组 (xin, yin) 解压缩到 x, y 中,您可以简单地执行以下操作:

x, y = (xin, yin)

或者如果元组绑定到一个变量,比如坐标:

x, y = coordinates

这称为元组解包。

于 2015-03-26T09:36:36.190 回答