Мой l oop застрял в бесконечном l oop Я чувствую, что нет ошибок, пожалуйста, докажите, что я не прав? - PullRequest
0 голосов
/ 23 апреля 2020

Мой l oop зацикливается бесконечно. Я почти уверен, что этого не должно быть?

Вот мой код:

def move(x, movie, g):
    global boo
    while boo:
        ij = 0
        for i in g:
            ij += 1
            if ij == movie and g[ij - 1] == "":
                g[ij - 1] = x
                boo = False
                break
            elif ij == 9 and movie == 9 and not g[ij - 1] == "":
                movie = input("Already occupied try again: ")
                boo = False
    return g

Я пытаюсь создать функцию для ti c ta c toe game.

Обновите здесь необходимые детали:

import md
g = ["", "", "o", "o", "", "", "", "", ""]
md.move("x", 4, g)
print(g)

Застряет в занятой части функции

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Путем отладки вручную boo нельзя установить в False.

Внимательно посмотрите на свой код:

Когда ij равно 4, г [3] равно o . Ваше первое условие не выполняется.

Второе условие не может быть выполнено в любой момент, потому что mov ie равно 4 . Тогда как ожидается 9 .

С уважением.

0 голосов
/ 23 апреля 2020

Ни одно из ваших условий остановки не выполнено:

ij == movie and g[ij - 1] == ""

, когда ij == mov ie (т.е. ij равен 4), тогда g [ij-1] (т.е. g [3]) не пусто, это "o"

ij == 9 and movie == 9 and not g[ij - 1] == "" 

, когда ij равно 9, mov ie не равно 9

Так что boo никогда не устанавливается в False, и пока l oop повторяется навсегда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...