Почему моя функция не обновляет глобальную переменную, состоящую из вложенных списков? (Python) - PullRequest
0 голосов
/ 22 ноября 2018

Я создаю функцию для отображения переменной board .В остальной части функции display_board предполагается изменить элементы board на '-'.Первый оператор if предназначен для другой переменной моей программы, называемой местоположения, которая отлично работает.Когда я вызываю display_board, он выводит правильный формат, но на самом деле он не меняет board , как видно при печати board .Есть идеи, почему это не работает?

Sidenote: это для начального класса программирования на python, поэтому вложенные списки примерно такие же продвинутые, как мои знания / область применения класса.

board = [

[' ', ' ', ' '],

[' ', ' ', ' '],

[' ', ' ', ' ']

]

def display_board(board):
    if board == locations:
        for row in locations:
            for column in row:
                print(column, end=' ')
        print()
# This chunk below is the important code that is not altering *board*
    else:
        for row in board:
            for column in row:
                if column == 'X':
                    print(column, end=' ')
                elif column == 'O':
                    print(column, end=' ')
                else:
                    column = '-'
                    print(column, end=' ')
            print()
display_board(board)
print(board)

output:

- - - 
- - - 
- - - 

[['', '', ''], ['', '', ''], ['', '', '']]

1 Ответ

0 голосов
/ 22 ноября 2018

Присвоение переменной не изменяет элемент списка, из которого изначально было скопировано значение переменной.Вам необходимо назначить сам элемент списка.Измените второй цикл, чтобы получить список индексов, затем вы можете назначить этому элементу.

    for row in board:
        for index, column in enumerate(row):
            if column == 'X':
                print(column, end=' ')
            elif column == 'O':
                print(column, end=' ')
            else:
                row[index] = '-'
                print(row[index], end=' ')
        print()
...