Ваша проблема в том, что вы назначаете board равным тому, что возвращает ваша функция, но вы ничего не возвращали из своей функции.
Функция назначает глобальную переменную платы следующим образом:
board = [[r, r, r, r, m],
[r, r, r, r, r],
[r, r, m, r, r],
[r, r, r, r, r],
[m, r, r, r, r]]
но ваша функция ничего не возвращает (Нет):
def create_board():
global board
m = 'M'
r = 'R'
board = [[r, r, r, r, m],
[r, r, r, r, r],
[r, r, m, r, r],
[r, r, r, r, r],
[m, r, r, r, r]]
# ends without returning anything..
и это «None» затем присваивается доске, отменяя то, что ваша функция create_board сделала с доской:
board = create_board() # create_board = None/nothing!
Позже, в строке, где произошла ваша ошибка, board = Нет
Вы должны просто запустить "create_board ()" или заставить create_board возвращать значение, а не просто изменять его. Еще один прекрасный пример того, почему глобальные переменные не должны использоваться ...
Вы также можете столкнуться с другими ошибками в подобных функциях, таких как set_board
.