【发布时间】:2016-08-16 12:37:31
【问题描述】:
我正在尝试编写一个函数,它可以在网格中向左(在 x 轴上)移动 1 个单位。只有当左边有一个有效坐标时它才应该工作,如果没有(即起点在网格的边缘),函数应该返回None。这是我的尝试:
def left_move(point):
try:
LEFT = grid[point[1]][point[0]-1]
except IndexError:
return None
if LEFT == '.':
change = [-1,0]
for idx, amount in enumerate(change):
point[idx]+=amount
return point
return None
假设起点是[0,3],因此位于网格边缘,我只运行代码的顶部:
def left_move(point):
try:
LEFT = grid[point[1]][point[0]-1]
except IndexError:
return None
它按预期返回None。但是如果整个块被执行,它会返回[-1,3],它在网格之外并且不应该被try-except 所允许。为什么是这样?以及如何纠正?
【问题讨论】: