Python: я не понимаю, почему в результате число более или менее - PullRequest
0 голосов
/ 22 октября 2019

Мой код для подсчета, сколько раз 'x' или 'X' находятся рядом с '.'

def count(list, row, col):
    count = 0
    for row in range((row - 1 if row > 0 else row), (row + 2 if row < (len(list) - 1) else row + 1)):
        for col in range((col - 1 if col > 0 else col), (col + 2 if col < (len(list[0]) - 1) else col + 1)):
            if list[row][col] in ('x', 'X'):
                count += 1
    return count

def calculate_x_count(list):
    for row in range(len(list)):
        for col in range(len(list[0])):
            if list[row][col] == '.':
                list[row][col] = str(count(list, row, col))
    return list

Мой список:

list = [['x', '.', '.'], ['.', '.', '.'], ['.', 'x', 'x'], ['.', '.', '.']]

результат должен быть:

[['x', '1', '0'], ['2', '3', '2'], ['1', 'x', 'x'], ['1', '2', '2']]

но в результате получим:

[['x', '1', '0'], ['3', '3', '2'], ['2', 'x', 'x'], ['1', '2', '2']]

1 Ответ

0 голосов
/ 23 октября 2019

Я понимаю, как это сделать, поэтому, если кому-то интересно:

def count(list, row, col):
    count = 0
    for h in range((row - 1 if row > 0 else row), (row + 2 if row < (len(list) - 1) else row + 1)):
        for w in range((col - 1 if col > 0 else col), (col + 2 if col < (len(list[0]) - 1) else col + 1)):
            if list[h][w] == 'x' or list[h][w] == 'X'::
                count += 1
    return count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...