我试图写一个函数,使移动1单位到左边(在x轴)在一个网格。它应该只在左边有一个有效的坐标时工作,如果没有(即起点在网格的边缘),函数应该返回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
允许。为什么会这样?又如何纠正呢?你知道吗
这是因为Python在数组索引中对
-1
的解释是数组的最后一个元素。-1
是引用数组元素的合法方式,因此不会触发IndexError
异常。你知道吗您需要手动检查给定的值是否解析为
-1
,然后相应地进行处理。你知道吗在这里,您需要将其余的代码放在try语句中。否则,它将尝试,失败,然后运行其余的代码。你知道吗
相关问题 更多 >
编程相关推荐