在做一些编码挑战时,我遇到了一个非常奇怪的语言怪癖。我写的程序是最低数字查找器。所以基本上你输入了一个数字列表,程序返回最低的数字。一切都进行了一段时间,就像我说它是一个相当基本的程序,但当我开始输入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
。有什么想法会发生这种情况吗?提前谢谢!
答案 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"
按字母顺序排列。