初学者的问题-我知道'10' > '8'
是False
,并且我知道'8'
的ASCII值为56,但是'10'
的值是什么? / p>
答案 0 :(得分:4)
按lexicographically完成字符串排序,这意味着您从一开始就按字符进行比较。 '10' > '8'
产生False
的原因是基于每个字符的比较:1
的ASCII值比8
小,因此以下字符被忽略。如果这些字符碰巧相等,则比较下一个字符,直到找到差异或到达一个字符串的末尾。在这种特殊情况下,其中一个是另一个的开始(前缀),较短的那个被认为是“较小”。 ('foot'
<'football'
)。
'10'
没有单个ASCII值,因为它由两个字符组成:'1'
(ASCII值49)和'0'
(ASCII值48)。
答案 1 :(得分:3)
Python按字母顺序比较字符串,即使用字符的ASCII值。
此处您未将数字10和8相比较。您正在将字符串'10'与'8'相比较。
这是字符串比较/排序(即您只对第一个字符正确的字符串进行排序(字母顺序)?
这就是这里所做的。在这里,它比较8和1而不是10。在ascii表中1发生在8之前。 1显然不大于8。这就是为什么您得到False的原因。
如果您打算进行数值比较,请使用int('10')
。
答案 2 :(得分:2)
每个字符都有其自己的ASCII值。 ASCII值'1'为49和ASCII值'0'为48。 可以将“ 10”的ASCII值表示为[49,48]。