我正在尝试在扫雷板上添加数字。我已经按照一些教程来解决它。但是我的没有用。有人可以看到丢失的内容吗?
field = [['.', '.', '.', '.'],
['.', '.', '*', '.'],
['*', '.', '*', '.'],
['*', '.', '.', '*']]
count = 0
row = len(field)
col = len(field[0])
row_range = range(row - 1, row + 2)
col_range = range(col - 1, row + 2)
for i in row_range:
for j in col_range:
if 0 <= i < len(field) and 0 <= j < len(field[0]) and field[i][j] != '.':
count += 1
for i in range(len(field)):
for j in range(len(field[0])):
field[i][j] = count
return field
What I need:
[['0', '1', '1', '1'],
['1', '3', '*', '2'],
['*', '4', '*', '3'],
['*', '3', '2', '*']]
What I get:
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]
我无法解释该代码出了什么问题,但以下是正确的:
import copy
import pprint
field = [['.', '.', '.', '.'],
['.', '.', '*', '.'],
['*', '.', '*', '.'],
['*', '.', '.', '*']]
output = copy.deepcopy(field)
for i in range(len(field)):
for j in range(len(field[0])):
if field[i][j] != '*':
count = 0
for a in (-1, 0, 1):
for b in (-1, 0, 1):
if (0 <= i+a < len(field) and
0 <= j+b < len(field[0]) and
field[i+a][j+b] == '*'):
count += 1
output[i][j] = str(count)
pprint.pprint(output, width=25)
此打印:
[['0', '1', '1', '1'],
['1', '3', '*', '2'],
['*', '4', '*', '3'],
['*', '3', '2', '*']]