所以,我正在学习python这本书:“如何像计算机科学家一样思考:学习python 3”这就出现了:我的问题出现在最后{{1} }和elif
。我们如何比较两个字符串类型与<。
else
列表和bigger_vocab
都是字符串类型,我无法理解它为何使用此book_words
。
请帮助我,如果你需要更多信息,尽管我在解释方面不是那么好,但试着回答。
<
答案 0 :(得分:1)
问题归结为“当我们比较两个字符串时会发生什么?”。基本上,如果A
按字母顺序排在B
之前,则字符串A
被视为“小于”字符串B
。因此ape
'小于'badger
,因为a
位于字母表中的b
之前。
由于vocab
和wds
都已排序,因此此循环基本上会跟踪我们当前正在检查的wds
中的哪个单词,然后跳过vocab
中的单词,直到vocab
中的当前单词与wds
中的当前单词匹配(在这种情况下vocab
中的索引向上移动一个单词)或wds
中的当前单词为“更大”比vocab
中的当前单词,在这种情况下,我们转到下一个词汇单词。
如果vocab
中的当前字词为'badger',则您可以向前跳过wds
,直到wds
中的当前字词大于'badger'(在这种情况下) 'badger'不在wds
列表中,或者wds
中的当前单词是'badger'(在这种情况下,您将'badger'添加到结果列表中然后转到下一个词汇词来寻找)。
答案 1 :(得分:1)
您可以在字符串上使用比较运算符==,!=,>,<,>=,<=
,就像对整数或浮点数一样。通过逐字符地比较字符ASCII值,对字符串进行比较的方式大致按字母顺序排列。有关详细信息,请参阅here。
答案 2 :(得分:0)
比较两个字符串时,您正在检查字母顺序* :
print('A' > 'B') # False
print('AAA' > 'AAB') # False
print('BAA' > 'AAA') # True
小写字母在大写字母之前:
print('z' > 'A') # True
和数字字符串是最后一个:
print('c' > '1') # True
print('B' > '0') # True
*我们实际检查的不完全是字母顺序,而是每个字符的ASCII value(字母按字母顺序排列)。
您可以使用print(ord('A'))
打印每个字符的ASCII值:
print(ord('A')) # 65
print(ord('B')) # 66
print(ord('z')) # 122
print(ord('1')) # 49
print(ord('0')) # 48
有了这些前提,我们确实希望 @ (ord('@')) = 64
)低于} (ord('}') = 125
):
print('@' < '}') # True