私はPythonを学び始めています。簡単な例から始めました。問題は、テーブルの各場所の近くにある地雷を数えることでした。以下の入力ファイルを検討してください。
4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0
出力は次のようになります
Field #1:
*100
2210
1*10
1110
Field #2:
**100
33200
1*100
そして私のコードは:
#!/usr/bin/python
import pprint
fin = open("1.2.in")
fout = open("1.2.out")
while True:
i, j = [int(x) for x in fin.readline().split()]
if(i == 0):
break
arr = []
for k in range(0,i):
line = fin.readline();
arr.append(list(line))
pprint.pprint(arr)
resarr = [[0]*j]*i
for row in range(0,i):
for col in range(0,j):
for rowIndex in range(-1,2):
for colIndex in range(-1,2):
# print row,rowIndex, col,colIndex
if (row + rowIndex < i) and (row + rowIndex >= 0) and ( col + colIndex < j) and (col+colIndex >=0) and (rowIndex != 0 or colIndex != 0):
#pprint.pprint(resarr[row][col])
#if arr[row+rowIndex][col+colIndex] == "*":
#print row,rowIndex, col,colIndex, " ", arr[row+rowIndex][col+colIndex]
#print resarr[row][col]
resarr[row][col] += 1
#pprint.pprint(resarr)
# print col+colIndex
print i,j
pprint.pprint(resarr)
何が問題なのかわかりませんが、インクリメントしたい場合resarr
は、合計列がインクリメントされます。