Проблема с изменением переменных внешнего цикла во внутреннем цикле в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с изменением переменных внешнего цикла во внутреннем цикле в Python

Сообщение Anonymous »

У меня возникла проблема: внутренний цикл перезаписывает переменные во внешнем, особенно при работе со списком, представляющим доску для игры в крестики-нолики. Я хочу поместить «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', ' ', ' ']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
[' ', 'X', ' ']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
[' ', ' ', 'X']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
...
Фактический результат:

Код: Выделить всё

['X', ' ', ' ']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
['X', 'X', ' ']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
['X', 'X', 'X']
[' ', ' ', ' ']
[' ', ' ', ' ']
---------------------
...
Вопрос:
Я ожидал, что в выводе будет показано, что «X» помещается в каждую пустую позицию один за другим, без изменения предыдущих размещений. Однако кажется, что каждая итерация внутреннего цикла влияет на переменную платы из внешнего цикла.
Я понимаю, что существуют разные способы решения этой проблемы, но мне хотелось бы знать почему Python ведет себя таким образом и как я могу предотвратить это.
Будем очень признательны за любые идеи и предложения!

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»