“ banana” <“ orange”是True,“ banana” <“ orange”是False,但是为什么呢?

时间:2019-11-16 04:45:18

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

banana<orange如果我在Python-3中比较这两个字符串,它们将返回 {{1} } 。但是我看到两个字符串每个都有6个字符。 同样,当我尝试使用True” <“ banana时,尽管它们仍然包括在内,但仍然Orange returns 每个6个字符。我听不懂您能帮助我以一种简单的方式来理解它们吗?

4 个答案:

答案 0 :(得分:2)

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

var ctor = typeBuilder.DefineConstructor(
  MethodAttributes.Public,
  CallingConventions.Standard, 
  new Type[] { typeBuilder }
);

98 <111 ==真

print(ord('b')) 
print(ord('o'))

98
111

98 <79 ==假

答案 1 :(得分:1)

这是因为基于字符串的ACSII值逐字符比较字符串。使用小写字母时,“ b”(#98)小于“ o”(#111),比较结果为True。在第二种情况下,大写字母“ O”为数字79,因此结果为False。

答案 2 :(得分:1)

它被称为“字典顺序”。它以字典包含单词的方式比较字符串。 'b'<'o'代表“香蕉” <“橙色”。

如果它是“ bbbba”和“ bbbbb”,那么它将是“ bbbba” <“ bbbbb”。 如果是“ zzz”和“ bbbb”,则应该是“ zzz”>“ bbbb”

答案 3 :(得分:1)

在比较两个字符串时,它们从第一个(最左)字符到最后一个(最右)字符逐个字符地进行比较。将每个字符按照其ASCII码进行比较,如果发现一个字符的代码较小,则该字符串被视为更小(不是以长度表示,而是以从字典的意义上来说),更大的代码也是如此,如果两个代码相同,则比较将获取每个字符串的下一个字符,然后再次对它们进行比较,依此类推。

bananaorange进行比较。他们的第一个字符是bo,代码分别为98111,因为98 < 111,然后是b < o,因此是{{ 1}}。但是,banana < orange是因为banana > Orange自其代码b > O起。实际上是98 > 79