簡體   English   中英

為什么我的布爾值在 while 循環中沒有改變?

[英]Why doesn't the value of my boolean change in a while-loop?

我的算法書用不同的方法在 Python 上實現了一個鏈表。 這是remove方法,但我不完全理解while循環。

此實現依賴於Node類先前定義的類有方法,如get.data() get.next() set_next()等名單本身就是一種叫做類UnorderedList self.head指的是列表中的第一項。

這個remove方法的想法是遍歷列表,直到找到我們想要刪除的項目。 我們創建一個current和一個previous來跟蹤我們正在查看的當前項目和之前的項目。

我的問題與 while 循環有關。 我們將found設置為False是為了在找到我們要查找的項目時更改它。 但是,當我們說not found時,while 循環不會將found的值更改為True嗎?

我知道這是一個簡單的問題,但我很難理解這個 while 循環為什么以及如何工作,因為在我的腦海中通常not使布爾值的范圍與它的相反。 有人可以向我解釋一下嗎?

順便說一句,我不需要對當前代碼進行任何解釋或改進,這是書中的一個示例,對我來說都很有意義,我只是想了解那部分。

def remove(self, item):
 current = self.head
 previous = None
 found = False
 while not found:
      if current.get_data() == item:
           found = True
      else:
           previous = current
           current = current.get_next()

 if previous == None:
      self.head = current.get_next()
 else:
      previous.set_next(current.get_next())

所以似乎我錯過了 while 循環試圖做的事情的一部分。 事實上,說not found意味着表達式的計算結果為True ,但在這種情況下,這不會停止循環。 它完全按照我們的意願去做,它繼續運行循環。 一旦我們找到了我們正在尋找的項目,我們將found的值更改為True 在這一點上,當我們評估while not found ,它將產生False ,這將使我們退出循環。

not found在 while 循環中用作條件,而不是用作更改值的語句。 您可以while not found while found == False閱讀為while found == False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM