这是我到目前为止的代码。一切都与测试用例一起工作。我只是很不擅长编码,所以我不知道如何编写一个函数,在指定的图块中打印周围图块中的炸弹数量。我在想找到炸弹瓦片,在它周围的所有瓦片上加上1,已经是炸弹的备用瓦片。但我不知道怎么写这个。你知道吗
目前为止的代码
def makemat(x):
for a in range(x):
list1=[]
b=0
while b<x:
list1.append(0)
b+=1
mat1.append(list1)
for c in range(x):
list2=[]
d=0
while d<x:
list2.append('-')
d+=1
mat2.append(list2)
makemat(8)
def printmat(mat):
for y in mat:
print(str(y)+"\t")
printmat(mat1)
print()
def addmines(z):
count=1
while count<=z:
p=randrange(len(mat1))
t=randrange(len(mat1))
if mat1[p][t]=="b":
count+=0
else:
mat1[p][t]="b"
count+=1
printmat(mat1)
addmines(10)
def addscores():
让我们把它分成几部分。你知道吗
第二和第三,你已经知道怎么做了,因为你在现有的代码中也做了类似的事情。但第一个几乎很简单:
这个琐碎的代码有两个问题:
(row, col)
作为自己的邻居。你知道吗row
是0,row-1
是-1,这是合法的,但不是您想要的;如果row
是7,row+1
是8,这将引发异常。你知道吗在本例中,您可以忽略第一个问题,如果
(row, col)
不是炸弹,它不会添加到计数中,如果是炸弹,我们不关心计数。你知道吗第二个问题很棘手,但是我们可以通过使用
range
来解决它,而不是显式地列出这三个值,并使用max
和min
强制范围的末端在边界内:现在,你只需要完成这个双循环,加上炸弹检查,计数和存储结果,然后把整个过程放到另一个双循环中,遍历矩阵中的每一行和每一列,你就完成了。你知道吗
您可能需要考虑将内容抽象出来—您可以将此循环编写为对
itertools.product
的单个调用,使用生成器表达式将计数编写为对sum
的调用,然后整个函数只有4行,另外您还可以重用部分函数。但是先让简单的版本工作。你知道吗相关问题 更多 >
编程相关推荐