n, m = input().split() n = int(n) m = int(m) lis = [] lis_new = [] '''生成 * 周围的八个坐标''' dirs = [ lambda x, y: (x - 1, y), # 上 lambda x, y: (x + 1, y), # 下 lambda x, y: (x, y - 1), # 左 lambda x, y: (x, y + 1), # 右 lambda x, y: (x - 1, y - 1), #左上 lambda x, y: (x - 1, y + 1), #右上 lambda x, y: (x + 1, y - 1), #左下 lambda x, y: (x + 1, y + 1), #右下 ] for i in range(n): li = list(input()) lis.append(li) for i in range(n): li = [0 for _ in range(m)] lis_new.append(li) for x in range(len(lis)): for y in range(len(lis[x])): ''' 如果lis(x,y)对应 * 则 将lis_new中的(x,y)对应的 0 换成 * ''' if lis[x][y] == '*': lis_new[x][y] = '*' for dir in dirs: next_node = dir(x, y) ''' 依次取出 * 周围的八个坐标, 如果没有越界则将出现次数进行累计并填入该位置 ''' if -1 < next_node[0] < n and -1 < next_node[1] < m and lis_new[next_node[0]][next_node[1]] != '*': lis_new[next_node[0]][next_node[1]] += 1 '''按照要求输出lis_new''' for li in lis_new: for j in li: print(j, end='') print()
全部评论
(0) 回帖