python - 如何在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吗?
解决方案
修改您正在迭代的项目不起作用。
我不知道你为什么有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
推荐阅读
- python - 不要在搜索字符串中包含正则表达式的一部分
- node.js - Gulp 4 任务运行但什么也不做
- javascript - 如何实例化在其他文件中创建的类的对象?
- javascript - 我可以在类型脚本事件处理程序中 ping 多个 API 吗?
- mysql - 如何在 MariaDB 中进行类型转换
- java - Firebase 查询应用程序在打开时崩溃
- php - form_params 中的编码美元符号导致 $top、$skip 和 $skipToken 被忽略
- java - 如何为 datePicker 类型设置文本
- c# - 如何根据月份和年份在列表中添加缺失的序列?
- angular - 如何在 Spring Security 中处理从 authenticationSuccessHandler 重定向到 Angular