为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的布尔值在 while 循环中没有改变?

为什么我的布尔值在 while 循环中没有改变?

慕妹3146593 2023-09-12 16:46:59
我的算法书有一个用不同方法在 Python 上实现链表的方法。这是remove方法,但我不完全理解while循环。这个实现依赖于Node之前定义的一个类,该类具有 、 、 等方法。get.data()列表get.next()本身set_next()是一个名为 的类UnorderedList。self.head指列表中的第一项。此方法的思想remove是遍历列表,直到找到要删除的项目。我们创建 acurrent和 aprevious来跟踪我们正在查看的当前项目和之前的项目。我的问题与 while 循环有关。我们设置的found目的False是当我们找到我们正在寻找的项目时更改它。但是,当我们说 时,while 循环不会改变foundto的值吗?Truenot found我知道这是一个简单的问题,但我很难理解这个 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())
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

所以看来我错过了 while 循环试图做的事情的一部分。事实上,saynot found意味着表达式的计算结果为True,但在这种情况下,这不会停止循环。它完全按照我们想要的方式执行,它继续运行循环。一旦找到我们正在寻找的项目,我们就将 的值更改foundTrue。那时,当我们评估它时,while not found它将产生False,这将使我们脱离循环。



查看完整回答
反对 回复 2023-09-12
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

not found用作 while 循环中的条件,而不是用作更改值的语句。您可以阅读while not foundwhile found == False



查看完整回答
反对 回复 2023-09-12
  • 2 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信