Python帮助:查找重复
我在下面的函数中,将字母“b”放置在矩阵中的某个位置。(我正在制作扫雷舰,这些“b”代表炸弹在矩阵中的位置)。我必须在函数中放入“z”炸弹,但炸弹放置的位置不能出现多次。我知道如何将它们放在函数中,但我无法确定它们是否在重复Python帮助:查找重复,python,arrays,list,matrix,repeat,Python,Arrays,List,Matrix,Repeat,我在下面的函数中,将字母“b”放置在矩阵中的某个位置。(我正在制作扫雷舰,这些“b”代表炸弹在矩阵中的位置)。我必须在函数中放入“z”炸弹,但炸弹放置的位置不能出现多次。我知道如何将它们放在函数中,但我无法确定它们是否在重复 from random import* mat1 = [] mat2 = [] def makemat(x): for y in range(x): list1 = [] list2 = [] for z in ra
from random import*
mat1 = []
mat2 = []
def makemat(x):
for y in range(x):
list1 = []
list2 = []
for z in range(x):
list1.append(0)
list2.append("-")
mat1.append(list1)
mat2.append(list2)
makemat(2)
def printmat(mat):
for a in range(len(mat)):
for b in range(len(mat)):
print(str(mat[a][b]) + "\t",end="")
print("\t")
def addmines(z):
for a in range(z):
x = randrange(0,len(mat1))
y = randrange(0,len(mat1))
mat1[y][x] = "b"
addmines(4)
谢谢也许我不明白这个问题,但为什么不检查一下“b”是否已经存在呢
def addmines(z):
for a in range(z):
x = randrange(0,len(mat1))
y = randrange(0,len(mat1))
if mat1[y][x] == "b":
addmines(1)
else:
mat1[y][x] = "b"
addmines(4)
你要做的是不更换样品。试用
如果网格中完全充满了地雷,您将得到一个
运行时错误
,因为您的递归太远了。谢谢,这与我要查找的非常接近。但在执行此操作时,它会一遍又一遍地重新打印矩阵,直到最后mat[y][x]!=“b”这是一个公平的问题,但你应该在问题的实际主体中描述你的问题,而不仅仅是标题(我认为这就是你被否决的原因)。
import random
...
def addmines(countMines):
countRows = len(mat1)
countCols = len(mat1[0])
countCells = countRows * countCols
indices = random.sample(range(countCells), countMines)
rowColIndices = [(i // countRows, i % countRows) for i in indices]
for rowIndex, colIndex in rowColIndices:
mat1[rowIndex][colIndex] = 'b'