Цикл Python while с! = 0 - PullRequest
       24

Цикл Python while с! = 0

0 голосов
/ 01 октября 2018

У меня проблема с циклом while:

  def ancestors(node, tree):
        ancestorsss = []
        ancestorsss.append(node.value)
        parent = node.parent
        while(parent != 0):
            parent_node = find_node(parent, tree)
            parent = parent_node.parent
            ancestors(parent_node, tree)
        return ancestorsss

в моем примере, первый родительский элемент равен 4, и он должен пройти цикл while, во втором родительском элементе итерации тоже 2, что нормально, третий-time parent равен 1, также хорошо, затем parent равен 0, и пока цикл все еще продолжается?Я думаю, что он должен выйти, когда parent = 0, но это не так.

Edit: Node - это объект, у которого есть значение и родитель.Дерево - это список объектов узлов [(1, 0), (2, 1), (3, 1), (4, 2), (5, 2), (6, 3), (7, 3), (8, 4), (9, 4)].

Теперь я вызываю функцию предков с узла (8,4) и думаю, что он должен идти (8, 4), (4, 2), (2, 1) и (1, 0).Он не останавливается на (1, 0)

Редактировать 2:

def find_node(parent, tree):
    node = next((x for x in tree if x.value == parent), None)
    return node

1 Ответ

0 голосов
/ 01 октября 2018

Скорее всего, проблема в типе родительской переменной, убедитесь, что это целое число или измените условие на while parent != "0".

, если это не так, вы можете поделиться более подробной информацией о node и node.parent

...