【问题标题】:"banana" < "orange" is True and "banana" < "Orange" is False but why? [duplicate]"banana" < "orange" 是 True 而 "banana" < "Orange" 是 False 但为什么呢? [复制]
【发布时间】:2020-03-12 05:37:44
【问题描述】:

"banana" &lt; "orange" 如果我比较 Python-3 中的这两个字符串,它们会返回 True。但我看到两个字符串各有 6 个字符。 当我尝试使用 "banana" Orange" returns False 时,它们仍然由 6 个字符组成。我无法理解他们?你能帮我用简单的方式理解它们吗?

【问题讨论】:

  • 他们都是假的;香蕉优于橙子。

标签: python python-3.x boolean python-3.7


【解决方案1】:

这是因为字符串是根据其 ACSII 值逐个字符进行比较的。当您使用小写字母 'b' (#98) 小于 'o' (#111) 并且比较结果为 True。在第二种情况下,大写字母“O”是数字 79,因此它的计算结果为 False。

【讨论】:

    【解决方案2】:

    它被称为“字典顺序”。它以字典包含单词的方式比较字符串。 'b'

    如果是“bbbba”和“bbbbb”,那么它将是“bbbba” "bbbb"

    【讨论】:

      【解决方案3】:

      正如我在评论中链接到的问题中所指出的,字符串是按顺序进行比较的。

      print(ord('b')) 
      print(ord('o'))
      
      98
      111
      

      98

      print(ord('b')) 
      print(ord('O'))
      
      98
      79
      

      98

      【讨论】:

        【解决方案4】:

        当比较两个字符串时,它们会逐个字符地进行比较,从它们的第一个(最左边)字符开始到最后一个(最右边)字符。这些字符中的每一个都根据它们的 ASCII 代码进行比较,如果发现一个字符的代码更小,则该字符串被视为 smaller(不是从长度意义上说,而是在字典意义),对于更大的代码也是如此,如果两个代码相同,则比较会获取每个字符串的下一个字符并再次比较它们,依此类推。

        bananaorange 比较一下。它们的第一个字符是bo,代码分别为98111,因为98 &lt; 111,然后是b &lt; o,因此,banana &lt; orange。但是,banana &gt; Orange 因为b &gt; O 因为他们的代码98 &gt; 79。其实banana &gt; Banana.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-13
          • 2023-03-06
          • 2019-12-18
          • 2022-12-07
          • 2015-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多