我有一个看起来像这样的while循环:
while a[xp][yp] - a[xp-1][yp] == 0 and a[xp][yp] - a[xp+1][yp] == 0 and a[xp][yp] - a[xp][yp-1] == 0 and a[xp][yp] - a[xp][yp+1] == 0:
c=randint(0,3)
if c==0:
xp=xp+1; yp=yp
elif c==1:
xp=xp-1; yp=yp
elif c==2:
xp=xp; yp=yp+1
else:
xp=xp; yp=yp-1
xp=xp; yp=yp
问题是,如果 xp 或 yp = 0 或 n(数组在 x 方向或 y 上的长度,它是一个方阵),那么 while 循环中的条件就会失效,我会得到一个越界错误。如果 xp=0 或 xp=n 或 yp=0 或 yp=n (我有一段单独的代码可以做到这一点),我只想获得一组新的坐标,然后让 while 循环再次运行。
代码的性质似乎是每 4 次代码中约有 1 次运行而不会超出范围。我只需要它继续运行,直到它发生工作。