gpt4 book ai didi

python - 有没有办法防止索引环绕?

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:11 24 4
gpt4 key购买 nike

我有以下内容:

# Possible neighbors as tuples
UP = (-1,0)
DOWN = (1,0)
LEFT = (0,-1)
RIGHT = (0,1)
POTENTIAL_NEIGHBORS = (UP, DOWN, LEFT, RIGHT)

def LocateNeighbors(self):
print '\nWorking on: {}:{}'.format(self.index,self.value)
for n in POTENTIAL_NEIGHBORS:
try:
if theBoard[self.index[0]+n[0]][self.index[1]+n[1]]:
print "Adding neighbor: " + theBoard[self.index[0]+n[0]][self.index[1]+n[1]]
self.neighbors.append(n)
except IndexError:
print 'failed on: {}'.format(n)

.. 其中 self 是游戏板中的一个单元格,例如:

      A      B      C      D      E      F
1 | {66} | {76} | {28} | {66} | {11} | {09}
-------------------------------------------
2 | {31} | {39} | {50} | {08} | {33} | {14}
-------------------------------------------
3 | {80} | {76} | {39} | {59} | {02} | {48}
-------------------------------------------
4 | {50} | {73} | {43} | {03} | {13} | {03}
-------------------------------------------
5 | {99} | {45} | {72} | {87} | {49} | {04}
-------------------------------------------
6 | {80} | {63} | {92} | {28} | {61} | {53}
-------------------------------------------

但是,这是我检查的第一个单元格 (0,0) 得到的输出:

Working on: (0, 0):66
Adding neighbor: 80
Adding neighbor: 31
Adding neighbor: 09
Adding neighbor: 76

本质上,如果索引(我认为是)无效,它会回绕到列表的末尾。有没有办法防止或至少检测这种行为?或者,也许是一种更优雅的方式来做到这一点?

最佳答案

按照以下行添加检查:

if (0 <= (self.index[0] + n[0]) < num_cols) and 
(0 <= (self.index[1] + n[1]) < num_rows):
# Do stuff here

这样,当您位于棋盘的相对边缘时,您也应该希望避免 IndexError

编辑:

我认为 Daniel 的回复更像 Pythonic。它遵循 EAFP原则。

关于python - 有没有办法防止索引环绕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29185806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com