首页 > 解决方案 > 如何在python中将for循环的增量设置为1?

问题描述

我正在创建一个战舰游戏,并想检查玩家目标位置周围的位置,以检查是否有任何船只位于那里,即

!(https://imgur.com/a/9Dddom0

在这个板上,程序将检查位置 (2,0), (1,1), (2,2) 和 (3,1) 是否有任何船只,如果有,则子程序将返回 True,如果没有将返回 False。

所以这是我当前的代码:

def RadarScan(Board, Ships, R, C):
    around = [[C, R - 1], [C + 1, R], [C, R + 1], [C - 1, R]]
    for i in around:
        for x in range(2):
            if int(i[x]) > 9 or int(i[x]) < 0:
                around.remove(i)
    near = False
    for i in range(len(around)):
        if Board[around[i][0]][around[i][1]] == "-" or "m" or "h":
            continue
        else:
            near = True
            break
    if near == True:
        return True
    else:
        return False

当检查目标周围的位置是否在棋盘上时,我使用一个 for 循环来增加周围的列表,其中包含所有周围的位置,但是让我们说周围的第二个位置是 (10,9),for循环将删除此位置,因为它不在板上,然后递增到周围的下一个位置,即第三个位置,但是周围只剩下原始位置 1、3 和 4,因此它会跳过检查原始位置3 而是直接回到原来的位置 4。

(对不起,如果这有点令人困惑)

所以我的问题是,我可以在'around.remove(i)'下面添加一些东西,将for循环'for i in around'的增量向后移动1吗?

标签: pythonlistfor-loopmultidimensional-arrayincrement

解决方案


修改您正在迭代的项目不起作用。

我不知道你为什么有int(i[x])。你期望R还是C不是整数?

Board[][] == "-" or "m" or "h"总是True因为"m" or "h"总是_True

你的循环最好写成:

for x, y in around:
    if x in range(10) and y in range(10):
        if Board[x][y] not in "-mh":
            return True
return False

推荐阅读