以下 Python 代码打印了什么?

What's printed by the following Pyhon code?

animals = ['horse', 'Pig', 'dog', 'Owl', 'lion', 'Hare', 'baboon', 'Fish', 'tiger', 'Zebra', 'Cow', 'Mouse', 'quail', 'Elephant']

for animal in animals:

    if (animal >= 'M') and (animal <= 'Z'):

        print(animal)

问题 1:

如何理解(animal >= 'M') and (animal <= 'Z')

问题 2:

正确答案是PigOwlMouse,为什么在这种情况下没有打印Zebra

正如 zvone 指出的那样,字符串是按字母顺序比较的,因此不打印 Zebra。

这种情况下的字母顺序是。

X 是 Z 杂 斑马

  1. 按字母顺序排列在 "M" 和 "Z" 之间的动物。
  2. "Zebra" 在 "Z" 中排序时出现在 python 之后。

从 a 到 z 的顺序类似于字母字符:

["a","aa","aaa" ... "ab","aba","abaa" ... "b"... "z", "za", "zaa" ... "zebra" ... "zzzzz" ...]

根据它们的 ascii 字符串表示,等价的是 a < b < c ... < y < z 并且 z 总是在 z* 之前(asterix 表示任何)