我有一个看起来像这样的网格。我在网格中随机放置一个“b”并将数字 1 放在字母“b”周围。这似乎在任何地方都有效,除非应该将 1 放在底行和列一直到右边。例如,它看起来像这样
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1 b
0 0 0 0 0 0 0 0 0 0
它应该是什么样子
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1 b
0 0 0 0 0 0 0 0 1 1
这是我正在使用的代码,我无法弄清楚为什么那些 1 没有被放置在那里。
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(10)
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):
count = 0
while (count < z):
x = randrange(0,len(mat1))
y = randrange(0,len(mat1))
if mat1[y][x] == "b":
count -= 1
else:
mat1[y][x] = "b"
count += 1
addmines(1)
def addscores():
for x in range(len(mat1)):
for y in range(len(mat1)):
if ((y < len(mat1)-1) and (x < len(mat1)-1)) and ((y >= 0) and (x >= 0))):
if mat1[y+1][x] == "b":
mat1[y][x] = 1
if mat1[y-1][x] == "b":
mat1[y][x] = 1
if mat1[y][x+1] == "b":
mat1[y][x] = 1
if mat1[y][x-1] == "b":
mat1[y][x] = 1
if mat1[y+1][x+1] == "b":
mat1[y][x] = 1
if mat1[y+1][x-1] == "b":
mat1[y][x] = 1
if mat1[y-1][x+1] == "b":
mat1[y][x] = 1
if mat1[y-1][x-1] == "b":
mat1[y][x] = 1
printmat(mat1)
addscores()