【问题标题】:Why is this the condition for the while loop? [closed]为什么这是 while 循环的条件? [关闭]
【发布时间】:2021-08-17 03:54:21
【问题描述】:

此函数执行二进制除法。但是,我对“while len(b) ≤ len(a) and a”循环的条件感到困惑。

为什么条件中有“and a”?

“a”不是一个列表吗?那么 len(b) 怎么会大于这个呢?

感谢您的帮助!

【问题讨论】:

  • 请贴出实际代码,不要截图
  • 请包含任何相关信息as text directly into your question,请勿链接或嵌入源代码或数据的外部图像。图像难以有效地为您提供帮助,因为它们无法复制,并且由于无法搜索而提供较差的可用性。见:Why not upload images of code/errors when asking a question?
  • 向我们确切地向我们展示您在跟踪此代码中的中间表达式时所不理解的内容。 “向我解释这个代码块”超出了 Stack Overflow 的范围:解构复合表达式并告诉我们您对其中一两个操作的不理解之处。
  • 想一想:a 在什么条件下计算为False?鉴于此,在什么情况下len(b) <= len(a) 会是True?这准确地告诉您and a 涵盖的基本情况。
  • 对不起!我只是想知道“a”在这里有什么用途,所以我认为截图就足够了。谢谢你的解释。

标签: python python-3.x while-loop


【解决方案1】:

在 python 中,空列表的布尔值为 0,因此 and a 可能会检查列表 a 是否为空

【讨论】:

    【解决方案2】:

    为什么条件中有“and a”?

    while 循环检查 2 个条件,首先检查 b 列表的长度是否小于或等于 a 列表的长度。然后使用and 语句告诉解释器您要检查第二个条件,在本例中是a 的内容。 and 只是告诉解释器检查多个条件。

    【讨论】:

      【解决方案3】:

      这是评估“a”是真还是假。它实际上是在评估“a”的大小或长度。如果“a”有任何值,那么它将评估为真。如果 "a" 为空,它将评估为 0 或 false。

      “a”和“b”的长度都可以为0,如果“and a”不包括在内且“a”为空,则“if a[0]”表达式将导致越界异常。

      基本上,如果“a”为空,则忽略 while 循环。好像先检查“a”的状态会更简单。

      【讨论】:

        【解决方案4】:

        如何阅读while循环

        我认为您对while 循环的阅读方式存在误解。

        正如您在代码中所做的那样:

        while len(b) <= len(a) and a:
        

        这意味着它有 2 个条件,len(b) &lt;= len(a) 和 a。所以不要读成len(b) &lt;= len(a) and a!

        换句话说这并不意味着len(b)必须小于len(a)和a。


        让我们阅读a

        第二个条件 (a) 可能看起来很奇怪,因为在现实生活中这没有任何意义。

        但编程语言与现实生活中的句子不同

        说有这些代码:

        代码 1

        a = []
        print(bool(a))
        

        代码 2

        a = [1, 2, 3, 3]
        print(bool(a))
        

        • 代码 1 将打印出 False

        • 代码 2 将打印出 True

        原因是,在python中当一个变量有值时,它等于True。


        结论

        回到这段代码:

        while len(b) <= len(a) and a:
        

        该代码还意味着继续前进 while len(b) &lt;= len(a) 和 a == True。

        所以while 循环意味着len(b) 必须小于len(a) AND a 必须是True(必须有值)。


        我真的希望这对你有帮助:)

        【讨论】:

          猜你喜欢
          • 2016-07-27
          • 1970-01-01
          • 2011-07-22
          • 1970-01-01
          • 2011-11-15
          • 1970-01-01
          • 1970-01-01
          • 2017-05-17
          • 1970-01-01
          相关资源
          最近更新 更多