У меня возникла проблема: внутренний цикл перезаписывает переменные во внешнем, особенно при работе со списком, представляющим доску для игры в крестики-нолики. Я хочу поместить «X» в каждую пустую позицию по одному, не изменяя уже измененную доску. Однако кажется, что внутренний цикл продолжает влиять на переменную внешнего цикла и переменные, которые что-то с ней имеют. (позиции и копии переменной)
Вот фрагмент моего кода:
def occurrences(s, lst):
return (i for i, e in enumerate(lst) if e == s)
positions = [[" ", " ", " ", " ", " ", " ", " ", " ", " "]]
for board in positions:
for i in range(board.count(" ")):
occ = list(occurrences(" ", board))[0]
board[occ] = "X"
print(board[0:3])
print(board[3:6])
print(board[6:])
print("---------------------")
Вопрос:
Я ожидал, что в выводе будет показано, что «X» помещается в каждую пустую позицию один за другим, без изменения предыдущих размещений. Однако кажется, что каждая итерация внутреннего цикла влияет на переменную платы из внешнего цикла.
Я понимаю, что существуют разные способы решения этой проблемы, но мне хотелось бы знать почему Python ведет себя таким образом и как я могу предотвратить это.
Будем очень признательны за любые идеи и предложения!
У меня возникла проблема: внутренний цикл перезаписывает переменные во внешнем, особенно при работе со списком, представляющим доску для игры в крестики-нолики. Я хочу поместить «X» в каждую пустую позицию по одному, не изменяя уже измененную доску. Однако кажется, что внутренний цикл продолжает влиять на переменную внешнего цикла и переменные, которые что-то с ней имеют. (позиции и копии переменной) Вот фрагмент моего кода: [code]def occurrences(s, lst): return (i for i, e in enumerate(lst) if e == s)
for board in positions: for i in range(board.count(" ")):
occ = list(occurrences(" ", board))[0] board[occ] = "X" print(board[0:3]) print(board[3:6]) print(board[6:]) print("---------------------") [/code] Ожидаемый результат: [code]['X', ' ', ' '] [' ', ' ', ' '] [' ', ' ', ' '] --------------------- [' ', 'X', ' '] [' ', ' ', ' '] [' ', ' ', ' '] --------------------- [' ', ' ', 'X'] [' ', ' ', ' '] [' ', ' ', ' '] --------------------- ... [/code] Фактический результат: [code]['X', ' ', ' '] [' ', ' ', ' '] [' ', ' ', ' '] --------------------- ['X', 'X', ' '] [' ', ' ', ' '] [' ', ' ', ' '] --------------------- ['X', 'X', 'X'] [' ', ' ', ' '] [' ', ' ', ' '] --------------------- ... [/code] Вопрос: Я ожидал, что в выводе будет показано, что «X» помещается в каждую пустую позицию один за другим, без изменения предыдущих размещений. Однако кажется, что каждая итерация внутреннего цикла влияет на переменную платы из внешнего цикла. Я понимаю, что существуют разные способы решения этой проблемы, но мне хотелось бы знать почему Python ведет себя таким образом и как я могу предотвратить это. Будем очень признательны за любые идеи и предложения!
У меня возникла проблема: внутренний цикл перезаписывает переменные во внешнем, особенно при работе со списком, представляющим доску «Крестики-нолики». Я хочу поместить «X» в каждую пустую позицию по одному, не изменяя уже измененную доску. Однако...
У меня возникла проблема: внутренний цикл перезаписывает переменные во внешнем, особенно при работе со списком, представляющим доску для игры в крестики-нолики. Я хочу поместить «X» в каждую пустую позицию по одному, не изменяя уже измененную доску....
У меня возникла проблема: внутренний цикл перезаписывает переменные во внешнем, особенно при работе со списком, представляющим доску для игры в крестики-нолики. Я хочу поместить «X» в каждую пустую позицию по одному, не изменяя уже измененную доску....