使用类方法的while循环作为条件语句:为什么其他相等运算符使while循环无法执行?

时间:2019-05-31 06:12:12

标签: python function oop conditional-statements boolean-expression

当我在定义方法heapify down(将非最小元素从根到叶的移位)的while循环中遇到错误时,我正在最小堆(在根节点上具有最小元素的数字树)上进行练习。此方法涉及一个辅助方法self.child_present,该方法检查每个节点是否存在子节点。

self.child_present(idx)返回一个值为True或False的布尔值,因此我最初认为必须使用相等运算符==将其与另一个布尔值进行比较,以使while循环运行。但是,这返回了一个错误,而self.child_present本身被认为是有效的语句/为什么? (idx是树中元素的索引,而self.count是树中元素的总数)

def child_present(self, idx):
    return self.left_child_idx(idx) <= self.count #Result is a Boolean

(1)

def heapify_down(self):  
      idx = 1
      while self.child_present(idx) == True:
      ....
       ...   
print("Heap Restored! self.heap_list")

(2)

def heapify_down(self):
      idx = 1
      while self.child_present(idx):
        ...
        ...
      print("Heap Restored! self.heap_list")

(1)返回错误,而(2)提供预期结果。这是类方法特有的吗,即while循环由于条件语句是类方法而返回错误?

0 个答案:

没有答案