题目描述
在一个n行m列的方格图上有一些位置有地雷,另外一些位置为空。
请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。
输入描述
输入的第一行包含两个整数n,m。
第2行到第n+1行每行包含m个整数,相邻整数之间用-个空格分隔。如果对应的整数为 0,表示这一格没有地雷。如果对应的整数为1,表示这一格有地雷
其中,1<n,m<100分钟后还是在当天
输出描述
输出n行,每行m个整数,相邻整数之间用空格分隔
对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出9。
import os
import sys
# 请在此输入您的代码
n,m=map(int,input().split())
s=[list(map(int,input().split())) for i in range(n)] #输入的数据
a=[[0]*m for i in range(n)] #要输出的地图
for i in range(n):
for j in range(m):
if s[i][j] ==1: #有地雷
a[i][j]=9
continue
cnt=0
if s[i][j] ==0:#没有地雷
for i1 in range(i-1,i+2):
for j1 in range(j-1,j+2):
if 0<=i1<n and 0<=j1<m:
if s[i1][j1]==1:
cnt+=1
a[i][j]=cnt
for i in a:
print(*i)
输出:
3 4
0 1 0 0
1 0 1 0
0 0 1 0
2 9 2 1
9 4 9 2
1 3 9 2
在Python中,*
是一种解包操作符(asterisk unpacking operator)。在print(*i)
中,它用于解包列表i
的元素。
当我们使用print
函数打印一个列表时,通常会打印出列表的表示形式,其中元素之间用逗号分隔,并且列表被方括号包围。但是,如果我们希望打印出列表的元素本身,而不是列表的表示形式,就可以使用*
解包操作符。
通过在print
函数中使用*i
,*
会解包列表i
的元素,将它们作为独立的参数传递给print
函数。这样,print
函数会以空格作为分隔符打印出列表的元素。
a = [1, 2, 3]
print(*a)
输出将是:
1 2 3
而不是:
[1, 2, 3]