Python String布尔比较

时间:2014-12-28 04:56:25

标签: python string integer boolean

在做一些编码挑战时,我遇到了一个非常奇怪的语言怪癖。我写的程序是最低数字查找器。所以基本上你输入了一个数字列表,程序返回最低的数字。一切都进行了一段时间,就像我说它是一个相当基本的程序,但当我开始输入2或3位数时,布尔逻辑似乎崩溃了。在2位数字和1位数字的列表中,如:
        x = [10, 5, 10]

程序将返回10作为最低编号。但是在常规的1位数列表中,将返回正确的最低值。所以最终我发现错误是因为我忘了将字符串类型转换为整数类型,一旦修复了程序运行完美无缺。但这仍然会导致一个有趣的问题,为什么Python相信&#34; 10&#34;不到&#34; 5&#34;但&#34; 9&#34;大于&#34; 5&#34;?为了故意证明Python认为这个事实并且它不是我程序中的一些外部因素,我打开了一个python解释器并实际输入"10" < "5"并且解释器返回True。有什么想法会发生这种情况吗?提前谢谢!

2 个答案:

答案 0 :(得分:3)

Python在比较字符串时使用字典顺序Lexicographical Order,即使字符串只包含数字。

在字典中,&#34; adam&#34; &LT; &#34;前夕&#34;因为&#34; a&#34; &LT; &#34; E&#34 ;.同样,&#34; 10&#34; &LT; &#34; 5&#34;因为&#34; 1&#34;小于&#34; 5&#34;。

答案 1 :(得分:1)

"10" < "5" 

因为

"1" < "5"

与英语相同

"at" < "i"

按字母顺序排列。