【问题标题】:"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" < "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(不是从长度意义上说,而是在字典意义),对于更大的代码也是如此,如果两个代码相同,则比较会获取每个字符串的下一个字符并再次比较它们,依此类推。
拿banana 和orange 比较一下。它们的第一个字符是b 和o,代码分别为98 和111,因为98 < 111,然后是b < o,因此,banana < orange。但是,banana > Orange 因为b > O 因为他们的代码98 > 79。其实banana > Banana.